source: src/tests/completeTypeError.c @ 13e2c54

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 13e2c54 was 142cf5d, checked in by Rob Schluntz <rschlunt@…>, 8 years ago

change type of string literal from char[] to const char[]

  • Property mode set to 100644
File size: 787 bytes
Line 
1void foo(int *) {}
2void bar(void *) {}
3forall(otype T) void baz(T *);
4forall(dtype T) void qux(T *);
5forall(dtype T | sized(T)) void quux(T *);
6
7struct A; // incomplete
8struct B {}; // complete
9
10int main() {
11        int *i;
12        void *v;
13
14        // A * x;
15        // A * y;
16        // B * x;
17        // B * z;
18
19        // okay
20        *i;
21        // *x; // picks B
22        // *z;
23        foo(i);
24        bar(i);
25        baz(i);
26        qux(i);
27        quux(i);
28
29        bar(v);
30        qux(v);
31        foo(v); // questionable, but works at the moment for C compatibility
32
33        // bad
34        *v;
35        // *y;
36        baz(v);
37        quux(v);
38}
39
40
41forall(otype T)
42void baz(T * x) {
43        // okay
44        bar(x);
45        baz(x);
46        qux(x);
47        quux(x);
48        *x;
49}
50
51forall(dtype T)
52void qux(T * y) {
53        // okay
54        bar(y);
55        qux(y);
56
57        // bad
58        baz(y);
59        quux(y);
60        *y;
61}
62
63forall(dtype T | sized(T))
64void quux(T * z) {
65        // okay
66        bar(z);
67        qux(z);
68        quux(z);
69        *z;
70
71        // bad
72        baz(z);
73}
Note: See TracBrowser for help on using the repository browser.