1 // RUN: pp-trace -callbacks '*,-FileChanged' %s -- -undef -target x86_64 -std=c++11 | FileCheck --strict-whitespace %s 2 3 #define MACRO 1 4 int i = MACRO; 5 #if defined(MACRO) 6 #endif 7 #undef MACRO 8 #if defined(MACRO) 9 #endif 10 #define FUNCMACRO(ARG1) ARG1 11 int j = FUNCMACRO(1); 12 #define X X_IMPL(a+y,b) X_IMPL2(c) 13 #define X_IMPL(p1,p2) 14 #define X_IMPL2(p1) 15 X 16 17 // CHECK: --- 18 // CHECK-NEXT: - Callback: MacroDefined 19 // CHECK: MacroNameTok: __STDC__ 20 // CHECK-NEXT: MacroDirective: MD_Define 21 // CHECK-NEXT: - Callback: MacroDefined 22 // CHECK: MacroNameTok: __STDC_HOSTED__ 23 // CHECK-NEXT: MacroDirective: MD_Define 24 // CHECK-NEXT: - Callback: MacroDefined 25 // CHECK: MacroNameTok: __cplusplus 26 // CHECK-NEXT: MacroDirective: MD_Define 27 // CHECK-NEXT: - Callback: MacroDefined 28 // CHECK: MacroNameTok: __STDC_UTF_16__ 29 // CHECK-NEXT: MacroDirective: MD_Define 30 // CHECK-NEXT: - Callback: MacroDefined 31 // CHECK: MacroNameTok: __STDC_UTF_32__ 32 // CHECK-NEXT: MacroDirective: MD_Define 33 // CHECK: - Callback: MacroDefined 34 // CHECK: - Callback: MacroDefined 35 // CHECK-NEXT: MacroNameTok: MACRO 36 // CHECK-NEXT: MacroDirective: MD_Define 37 // CHECK-NEXT: - Callback: MacroExpands 38 // CHECK-NEXT: MacroNameTok: MACRO 39 // CHECK-NEXT: MacroDefinition: [(local)] 40 // CHECK-NEXT: Range: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:4:9", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:4:9"] 41 // CHECK-NEXT: Args: (null) 42 // CHECK-NEXT: - Callback: Defined 43 // CHECK-NEXT: MacroNameTok: MACRO 44 // CHECK-NEXT: MacroDefinition: [(local)] 45 // CHECK-NEXT: Range: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:5:5", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:5:19"] 46 // CHECK-NEXT: - Callback: If 47 // CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-macro.cpp:5:2" 48 // CHECK-NEXT: ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:5:5", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:5:19"] 49 // CHECK-NEXT: ConditionValue: CVK_True 50 // CHECK-NEXT: - Callback: Endif 51 // CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-macro.cpp:6:2" 52 // CHECK-NEXT: IfLoc: "{{.*}}{{[/\\]}}pp-trace-macro.cpp:5:2" 53 // CHECK-NEXT: - Callback: MacroUndefined 54 // CHECK-NEXT: MacroNameTok: MACRO 55 // CHECK-NEXT: MacroDefinition: [(local)] 56 // CHECK-NEXT: - Callback: Defined 57 // CHECK-NEXT: MacroNameTok: MACRO 58 // CHECK-NEXT: MacroDefinition: [] 59 // CHECK-NEXT: Range: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:8:5", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:8:19"] 60 // CHECK-NEXT: - Callback: If 61 // CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-macro.cpp:8:2" 62 // CHECK-NEXT: ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:8:5", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:8:19"] 63 // CHECK-NEXT: ConditionValue: CVK_False 64 // CHECK-NEXT: - Callback: Endif 65 // CHECK-NEXT: Loc: "{{.*}}{{[/\\]}}pp-trace-macro.cpp:9:2" 66 // CHECK-NEXT: IfLoc: "{{.*}}{{[/\\]}}pp-trace-macro.cpp:8:2" 67 // CHECK-NEXT: - Callback: SourceRangeSkipped 68 // CHECK-NEXT: Range: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:8:1", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:9:2"] 69 // CHECK-NEXT: - Callback: MacroDefined 70 // CHECK-NEXT: MacroNameTok: FUNCMACRO 71 // CHECK-NEXT: MacroDirective: MD_Define 72 // CHECK-NEXT: - Callback: MacroExpands 73 // CHECK-NEXT: MacroNameTok: FUNCMACRO 74 // CHECK-NEXT: MacroDefinition: [(local)] 75 // CHECK-NEXT: Range: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:11:9", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:11:20"] 76 // CHECK-NEXT: Args: [1] 77 // CHECK-NEXT: - Callback: MacroDefined 78 // CHECK-NEXT: MacroNameTok: X 79 // CHECK-NEXT: MacroDirective: MD_Define 80 // CHECK-NEXT: - Callback: MacroDefined 81 // CHECK-NEXT: MacroNameTok: X_IMPL 82 // CHECK-NEXT: MacroDirective: MD_Define 83 // CHECK-NEXT: - Callback: MacroDefined 84 // CHECK-NEXT: MacroNameTok: X_IMPL2 85 // CHECK-NEXT: MacroDirective: MD_Define 86 // CHECK-NEXT: - Callback: MacroExpands 87 // CHECK-NEXT: MacroNameTok: X 88 // CHECK-NEXT: MacroDefinition: [(local)] 89 // CHECK-NEXT: Range: ["{{.*}}{{[/\\]}}pp-trace-macro.cpp:15:1", "{{.*}}{{[/\\]}}pp-trace-macro.cpp:15:1"] 90 // CHECK-NEXT: Args: (null) 91 // CHECK-NEXT: - Callback: MacroExpands 92 // CHECK-NEXT: MacroNameTok: X_IMPL 93 // CHECK-NEXT: MacroDefinition: [(local)] 94 // CHECK-NEXT: Range: [(nonfile), (nonfile)] 95 // CHECK-NEXT: Args: [a <plus> y, b] 96 // CHECK-NEXT: - Callback: MacroExpands 97 // CHECK-NEXT: MacroNameTok: X_IMPL2 98 // CHECK-NEXT: MacroDefinition: [(local)] 99 // CHECK-NEXT: Range: [(nonfile), (nonfile)] 100 // CHECK-NEXT: Args: [c] 101 // CHECK-NEXT: - Callback: EndOfMainFile 102 // CHECK-NEXT: ... 103