| // Test typedef and global variable in function. |
| typedef struct { |
| int a; |
| int b; |
| } FooBar; |
| FooBar fb; |
| int f(int i) { |
| if (fb.a) { |
| fb.b = i; |
| } |
| return 1; |
| } |
| |
| // Test enums. |
| enum B { x2 = 42, |
| y2, |
| z2 }; |
| int enumCheck(void) { |
| return x2; |
| } |
| |
| // Test reporting an error in macro definition |
| #define MYMACRO(ctx) \ |
| ctx->a; |
| struct S { |
| int a; |
| }; |
| int g(struct S *ctx) { |
| MYMACRO(ctx); |
| return 0; |
| } |
| |
| // Test that asm import does not fail. |
| // TODO: Support the GNU extension asm keyword as well. |
| // Example using the GNU extension: asm("mov $42, %0" : "=r"(res)); |
| int inlineAsm() { |
| int res; |
| __asm__("mov $42, %0" |
| : "=r"(res)); |
| return res; |
| } |
| |
| // Implicit function. |
| int identImplicit(int in) { |
| return in; |
| } |
| |
| // ASTImporter doesn't support this construct. |
| int structInProto(struct DataType {int a;int b; } * d) { |
| return 0; |
| } |
| |
| int switchWithoutCases(int x) { |
| switch (x) { |
| }; |
| return 0; |
| } |