source:
src/tests/completeTypeError.c
@
7d49b72
Last change on this file since 7d49b72 was 142cf5d, checked in by , 7 years ago | |
---|---|
|
|
File size: 787 bytes |
Rev | Line | |
---|---|---|
[2c57025] | 1 | void foo(int *) {} |
2 | void bar(void *) {} | |
3 | forall(otype T) void baz(T *); | |
4 | forall(dtype T) void qux(T *); | |
5 | forall(dtype T | sized(T)) void quux(T *); | |
6 | ||
[f7e749f] | 7 | struct A; // incomplete |
8 | struct B {}; // complete | |
9 | ||
[2c57025] | 10 | int main() { |
11 | int *i; | |
12 | void *v; | |
13 | ||
[f7e749f] | 14 | // A * x; |
15 | // A * y; | |
16 | // B * x; | |
17 | // B * z; | |
18 | ||
[2c57025] | 19 | // okay |
[0f35657] | 20 | *i; |
[f7e749f] | 21 | // *x; // picks B |
22 | // *z; | |
[2c57025] | 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 | |
[0f35657] | 34 | *v; |
[f7e749f] | 35 | // *y; |
[2c57025] | 36 | baz(v); |
37 | quux(v); | |
38 | } | |
39 | ||
[f7e749f] | 40 | |
[2c57025] | 41 | forall(otype T) |
42 | void baz(T * x) { | |
43 | // okay | |
44 | bar(x); | |
45 | baz(x); | |
46 | qux(x); | |
47 | quux(x); | |
[0f35657] | 48 | *x; |
[2c57025] | 49 | } |
50 | ||
51 | forall(dtype T) | |
52 | void qux(T * y) { | |
53 | // okay | |
54 | bar(y); | |
55 | qux(y); | |
56 | ||
57 | // bad | |
58 | baz(y); | |
59 | quux(y); | |
[0f35657] | 60 | *y; |
[2c57025] | 61 | } |
62 | ||
63 | forall(dtype T | sized(T)) | |
[142cf5d] | 64 | void quux(T * z) { |
[2c57025] | 65 | // okay |
66 | bar(z); | |
67 | qux(z); | |
68 | quux(z); | |
[0f35657] | 69 | *z; |
[2c57025] | 70 | |
71 | // bad | |
72 | baz(z); | |
73 | } |
Note: See TracBrowser
for help on using the repository browser.