source:
src/tests/completeTypeError.c@
2ba0bc7
| Last change on this file since 2ba0bc7 was 142cf5d, checked in by , 9 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.