Home | History | Annotate | Download | only in Misc
      1 // RUN: not %clang -fsyntax-only -fmacro-backtrace-limit=0 %s 2>&1 | FileCheck %s
      2 
      3 #define FOO 1+"hi"
      4 #define BAR FOO
      5 #define BAZ BAR
      6 #define QUZ BAZ
      7 #define TAZ QUZ
      8 #define ABA TAZ
      9 #define BAB ABA
     10 #define ZAZ BAB
     11 #define WAZ ZAZ
     12 #define DROOL WAZ
     13 #define FOOL DROOL
     14 
     15 FOOL;
     16 
     17 // CHECK: :15:1: error: expected identifier or '('
     18 // CHECK: FOOL
     19 // CHECK: ^
     20 // CHECK: :13:14: note: expanded from macro 'FOOL'
     21 // CHECK: #define FOOL DROOL
     22 // CHECK:              ^
     23 // CHECK: :12:15: note: expanded from macro 'DROOL'
     24 // CHECK: #define DROOL WAZ
     25 // CHECK:               ^
     26 // CHECK: :11:13: note: expanded from macro 'WAZ'
     27 // CHECK: #define WAZ ZAZ
     28 // CHECK:             ^
     29 // CHECK: :10:13: note: expanded from macro 'ZAZ'
     30 // CHECK: #define ZAZ BAB
     31 // CHECK:             ^
     32 // CHECK: :9:13: note: expanded from macro 'BAB'
     33 // CHECK: #define BAB ABA
     34 // CHECK:             ^
     35 // CHECK: :8:13: note: expanded from macro 'ABA'
     36 // CHECK: #define ABA TAZ
     37 // CHECK:             ^
     38 // CHECK: :7:13: note: expanded from macro 'TAZ'
     39 // CHECK: #define TAZ QUZ
     40 // CHECK:             ^
     41 // CHECK: :6:13: note: expanded from macro 'QUZ'
     42 // CHECK: #define QUZ BAZ
     43 // CHECK:             ^
     44 // CHECK: :5:13: note: expanded from macro 'BAZ'
     45 // CHECK: #define BAZ BAR
     46 // CHECK:             ^
     47 // CHECK: :4:13: note: expanded from macro 'BAR'
     48 // CHECK: #define BAR FOO
     49 // CHECK:             ^
     50 // CHECK: :3:13: note: expanded from macro 'FOO'
     51 // CHECK: #define FOO 1+"hi"
     52 // CHECK:             ^
     53 
     54 #define ADD(a, b) a ## #b
     55 ADD(L, foo)
     56 // CHECK:    error: expected identifier or '('
     57 // CHECK:    ADD(L, foo)
     58 // CHECK: {{^\^}}
     59 // CHECK:    note: expanded from macro 'ADD'
     60 // CHECK:    #define ADD(a, b) a ## #b
     61 // CHECK: {{^                  \^}}
     62 // CHECK:    note: expanded from here
     63 // CHECK:    L"foo"
     64 // CHECK: {{^\^}}
     65 
     66 // CHECK: 2 errors generated.
     67