This matters in assembler mode, where this is silently allowed.
This fixes rdar://
6709206.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67539
91177308-0d34-0410-b5e6-
96231b3b80d8
if (!PP.getLangOptions().AsmPreprocessor)
PP.Diag(PasteOpLoc, diag::err_pp_bad_paste)
<< std::string(Buffer.begin(), Buffer.end()-1);
- return false;
+
+ // Do not consume the RHS.
+ --CurToken;
}
// Turn ## into 'unknown' to avoid # ## # from looking like a paste
// RUN: grep "4: ''" %t &&
4: ''
+
+// Portions of invalid pasting should still expand as macros.
+// rdar://6709206
+// RUN: grep "5: expanded (" %t &&
+#define M4 expanded
+#define M5() M4 ## (
+
+5: M5()
+
+
+
// RUN: true