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