52 lines
864 B
C
52 lines
864 B
C
|
// 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;
|
||
|
}
|