// 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;
}
