13e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// RUN: rm -rf %t 23e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// RUN: mkdir %t 33e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng -target x86_64-apple-darwin10 %s > %t/out 43e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// RUN: FileCheck %s < %t/out 53e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 63e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// Ensure that XML we generate is not invalid. 73e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// RUN: FileCheck %s -check-prefix=WRONG < %t/out 83e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// WRONG-NOT: CommentXMLInvalid 93e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// rdar://12378714 103e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 113e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 123e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief Aaa. 133e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 143e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianint global_function(); 153e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>int global_function()</Declaration> 163e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 173e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 183e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \param x1 Aaa. 193e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 203e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianextern void external_function(int x1); 213e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>extern void external_function(int x1)</Declaration> 223e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 233e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 243e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief global variable; 253e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 263e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianint global_variable; 273e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>int global_variable</Declaration> 283e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 293e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 303e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief local variable; 313e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 323e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianstatic int static_variable; 333e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>static int static_variable</Declaration> 343e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 353e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 363e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief external variable 373e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 383e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianextern int external_variable; 393e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>extern int external_variable</Declaration> 403e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 413e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianint global_function() { 423e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian /** 433e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief a local variable 443e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian */ 453e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian int local = 10; 463e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian return local; 473e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian} 483e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>int global_function()</Declaration> 493e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>int local = 10</Declaration> 503e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 513e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 523e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief initialized decl. 533e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 543e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianint initialized_global = 100; 553e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>int initialized_global = 100</Declaration> 563e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 573e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 583e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief typedef example 593e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 603e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahaniantypedef int INT_T; 613e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>typedef int INT_T</Declaration> 623e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 633e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 643e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief aggregate type example 653e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 663e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianstruct S { 673e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 683e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief iS1; 693e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 703e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian int iS1; 713e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 723e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief dS1; 733e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 743e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian double dS1; 753e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian}; 7636fab8d70eee342d66e03c9b09c029f126196103Manuel Klimek// CHECK: <Declaration>struct S {}</Declaration> 773e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>int iS1</Declaration> 783e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>double dS1</Declaration> 793e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 803e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 813e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief enum e; 823e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 833e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianenum e { 843e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian One, 853e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 863e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian * \brief Two; 873e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 883e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian Two, 893e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian Three 903e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian}; 912f1ac41a6d8d202dcc39ab8eb56ccea823dc062eManuel Klimek// CHECK: <Declaration>enum e {}</Declaration> 923e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian// CHECK: <Declaration>Two</Declaration> 933e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 943e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 953e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian *\brief block declaration 963e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 973e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianint (^Block) (int i, int j); 9846ef852618b18bc79e403b37a12c9b692e76126bDaniel Jasper// CHECK: <Declaration>int (^Block)(int, int)</Declaration> 993e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian 1003e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian/** 1013e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian *\brief block declaration 1023e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanian*/ 1033e2fe86dd0dd65bff254e3bbdc0ea8df9282dc35Fariborz Jahanianint (^Block1) (int i, int j) = ^(int i, int j) { return i + j; }; 10436fab8d70eee342d66e03c9b09c029f126196103Manuel Klimek// CHECK: <Declaration>int (^Block1)(int, int) = ^(int i, int j) {}</Declaration> 105