xref: /llvm-project/lldb/test/Shell/SymbolFile/NativePDB/ast-methods.cpp (revision 0cfcd387f968f2c9de0648673b5db9e221e5c84e)
187aa9c9eSJonas Devlieghere // clang-format off
2eb50b643SPavel Labath // REQUIRES: lld, x86
387aa9c9eSJonas Devlieghere 
4eb50b643SPavel Labath // RUN: %clang_cl --target=x86_64-windows-msvc -Od -Z7 -GR- -c /Fo%t.obj -- %s
5eb50b643SPavel Labath // RUN: lld-link -debug:full -nodefaultlib -entry:main %t.obj -out:%t.exe -pdb:%t.pdb
6cf3464bbSJonas Devlieghere // RUN: %lldb -f %t.exe -s \
7a3a8ed33SZequan Wu // RUN:     %p/Inputs/ast-methods.lldbinit 2>&1 | FileCheck %s --check-prefix=AST
8a3a8ed33SZequan Wu 
9cf3464bbSJonas Devlieghere // RUN: lldb-test symbols --dump-ast %t.exe | FileCheck %s --check-prefix=SYMBOL
1087aa9c9eSJonas Devlieghere 
1187aa9c9eSJonas Devlieghere struct Struct {
1287aa9c9eSJonas Devlieghere   void simple_method() {}
1387aa9c9eSJonas Devlieghere 
1487aa9c9eSJonas Devlieghere   virtual void virtual_method() {}
1587aa9c9eSJonas Devlieghere 
1687aa9c9eSJonas Devlieghere   static void static_method() {}
1787aa9c9eSJonas Devlieghere 
1887aa9c9eSJonas Devlieghere   int overloaded_method() {}
1987aa9c9eSJonas Devlieghere   int overloaded_method(char c) {}
2087aa9c9eSJonas Devlieghere   int overloaded_method(char c, int i, ...) {}
2187aa9c9eSJonas Devlieghere };
2287aa9c9eSJonas Devlieghere 
2387aa9c9eSJonas Devlieghere Struct s;
2487aa9c9eSJonas Devlieghere 
2587aa9c9eSJonas Devlieghere int main(int argc, char **argv) {
26a3a8ed33SZequan Wu   s.simple_method();
27a3a8ed33SZequan Wu   s.static_method();
28a3a8ed33SZequan Wu   s.virtual_method();
29a3a8ed33SZequan Wu   s.overloaded_method();
30a3a8ed33SZequan Wu   s.overloaded_method('a');
31a3a8ed33SZequan Wu   s.overloaded_method('a', 1);
3287aa9c9eSJonas Devlieghere   return 0;
3387aa9c9eSJonas Devlieghere }
3487aa9c9eSJonas Devlieghere 
35a3a8ed33SZequan Wu // AST: TranslationUnitDecl
36a3a8ed33SZequan Wu // AST: |-CXXRecordDecl {{.*}} struct Struct definition
37a3a8ed33SZequan Wu // AST: | |-CXXMethodDecl {{.*}} simple_method 'void (){{.*}}'
38a3a8ed33SZequan Wu // AST: | |-CXXMethodDecl {{.*}} virtual_method 'void (){{.*}}' virtual
39a3a8ed33SZequan Wu // AST: | |-CXXMethodDecl {{.*}} static_method 'void ()' static
40a3a8ed33SZequan Wu // AST: | |-CXXMethodDecl {{.*}} overloaded_method 'int (){{.*}}'
41a3a8ed33SZequan Wu // AST: | |-CXXMethodDecl {{.*}} overloaded_method 'int (char){{.*}}'
42a3a8ed33SZequan Wu // AST: | | `-ParmVarDecl {{.*}} 'char'
43a3a8ed33SZequan Wu // AST: | `-CXXMethodDecl {{.*}} overloaded_method 'int (char, int, ...)'
44a3a8ed33SZequan Wu // AST: |   |-ParmVarDecl {{.*}} 'char'
45a3a8ed33SZequan Wu // AST: |   `-ParmVarDecl {{.*}} 'int'
46a3a8ed33SZequan Wu 
47*0cfcd387SZequan Wu // SYMBOL:      struct Struct {
48a3a8ed33SZequan Wu // SYMBOL-NEXT:     void simple_method();
49a3a8ed33SZequan Wu // SYMBOL-NEXT:     static void static_method();
50a3a8ed33SZequan Wu // SYMBOL-NEXT:     virtual void virtual_method();
51a3a8ed33SZequan Wu // SYMBOL-NEXT:     int overloaded_method();
52a3a8ed33SZequan Wu // SYMBOL-NEXT:     int overloaded_method(char);
53a3a8ed33SZequan Wu // SYMBOL-NEXT:     int overloaded_method(char, int, ...);
54a3a8ed33SZequan Wu // SYMBOL-NEXT: };
55*0cfcd387SZequan Wu // SYMBOL-NEXT: Struct s;
56*0cfcd387SZequan Wu // SYMBOL-NEXT: int main(int argc, char **argv);
57