1 // RUN: %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