// RUN: not %clang -fsyntax-only -fmacro-backtrace-limit=0 %s 2>&1 | FileCheck %s #define FOO 1+"hi" #define BAR FOO #define BAZ BAR #define QUZ BAZ #define TAZ QUZ #define ABA TAZ #define BAB ABA #define ZAZ BAB #define WAZ ZAZ #define DROOL WAZ #define FOOL DROOL FOOL; // CHECK: :15:1: error: expected identifier or '(' // CHECK: FOOL // CHECK: ^ // CHECK: :13:14: note: expanded from macro 'FOOL' // CHECK: #define FOOL DROOL // CHECK: ^ // CHECK: :12:15: note: expanded from macro 'DROOL' // CHECK: #define DROOL WAZ // CHECK: ^ // CHECK: :11:13: note: expanded from macro 'WAZ' // CHECK: #define WAZ ZAZ // CHECK: ^ // CHECK: :10:13: note: expanded from macro 'ZAZ' // CHECK: #define ZAZ BAB // CHECK: ^ // CHECK: :9:13: note: expanded from macro 'BAB' // CHECK: #define BAB ABA // CHECK: ^ // CHECK: :8:13: note: expanded from macro 'ABA' // CHECK: #define ABA TAZ // CHECK: ^ // CHECK: :7:13: note: expanded from macro 'TAZ' // CHECK: #define TAZ QUZ // CHECK: ^ // CHECK: :6:13: note: expanded from macro 'QUZ' // CHECK: #define QUZ BAZ // CHECK: ^ // CHECK: :5:13: note: expanded from macro 'BAZ' // CHECK: #define BAZ BAR // CHECK: ^ // CHECK: :4:13: note: expanded from macro 'BAR' // CHECK: #define BAR FOO // CHECK: ^ // CHECK: :3:13: note: expanded from macro 'FOO' // CHECK: #define FOO 1+"hi" // CHECK: ^ #define ADD(a, b) a ## #b ADD(L, foo) // CHECK: error: expected identifier or '(' // CHECK: ADD(L, foo) // CHECK: {{^\^}} // CHECK: note: expanded from macro 'ADD' // CHECK: #define ADD(a, b) a ## #b // CHECK: {{^ \^}} // CHECK: note: expanded from here // CHECK: L"foo" // CHECK: {{^\^}} // CHECK: 2 errors generated.