// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s \ 
// RUN: | FileCheck %s 

/**
 * \brief Aaa.
*/
int global_function();
// CHECK: <Declaration>int global_function()</Declaration>

/**
 * \param x1 Aaa.
*/
extern void external_function(int x1);
// CHECK: <Declaration>extern void external_function(int x1)</Declaration>

/**
 * \brief global variable;
*/
int global_variable;
// CHECK: <Declaration>int global_variable</Declaration>

/**
 * \brief local variable;
*/
static int static_variable;
// CHECK: <Declaration>static int static_variable</Declaration>

/**
 * \brief external variable
*/
extern int external_variable;
// CHECK: <Declaration>extern int external_variable</Declaration>

int global_function() {
  /**
   * \brief a local variable
  */
  int local = 10;
  return local;
}
// CHECK: <Declaration>int global_function()</Declaration>
// CHECK: <Declaration>int local = 10</Declaration>

/**
 * \brief initialized decl.
*/
int initialized_global = 100;
// CHECK: <Declaration>int initialized_global = 100</Declaration>

/**
 * \brief typedef example
*/
typedef int INT_T;
// CHECK: <Declaration>typedef int INT_T</Declaration>

/**
 * \brief aggregate type example
*/
struct S {
/**
 * \brief iS1;
*/
  int iS1;
/**
 * \brief dS1;
*/
  double dS1;
};
// CHECK: <Declaration>struct S {}</Declaration>
// CHECK: <Declaration>int iS1</Declaration>
// CHECK: <Declaration>double dS1</Declaration>

/**
 * \brief enum e;
*/
enum e {
  One,
/**
 * \brief Two;
*/
  Two,
  Three
};
// CHECK: <Declaration>enum e {}</Declaration>
// CHECK: <Declaration>Two</Declaration>

/**
 *\brief block declaration
*/
int (^Block) (int i, int j);
// CHECK: <Declaration>int (^Block)(int, int)</Declaration>

/**
 *\brief block declaration
*/
int (^Block1) (int i, int j) = ^(int i, int j) { return i + j; };
// CHECK: <Declaration>int (^Block1)(int, int) = ^(int i, int j) {\n}</Declaration>
