requires on lambdas when not allowed, which we previously missed.
(`#61748 <https://github.com/llvm/llvm-project/issues/61748>`_)
- Fix confusing diagnostic for incorrect use of qualified concepts names.
+- Fix handling of comments in function like macros so they are ignored in -CC
+ mode.
+ (`#60887 <https://github.com/llvm/llvm-project/issues/60887>`_)
Bug Fixes to Compiler Builtins
SmallVector<IdentifierInfo*, 32> Parameters;
while (true) {
- LexUnexpandedToken(Tok);
+ LexUnexpandedNonComment(Tok);
switch (Tok.getKind()) {
case tok::r_paren:
// Found the end of the parameter list.
}
// Lex the token after the identifier.
- LexUnexpandedToken(Tok);
+ LexUnexpandedNonComment(Tok);
if (Tok.isNot(tok::r_paren)) {
Diag(Tok, diag::err_pp_missing_rparen_in_macro_def);
return true;
Parameters.push_back(II);
// Lex the token after the identifier.
- LexUnexpandedToken(Tok);
+ LexUnexpandedNonComment(Tok);
switch (Tok.getKind()) {
default: // #define X(A B
Diag(Tok, diag::ext_named_variadic_macro);
// Lex the token after the identifier.
- LexUnexpandedToken(Tok);
+ LexUnexpandedNonComment(Tok);
if (Tok.isNot(tok::r_paren)) {
Diag(Tok, diag::err_pp_missing_rparen_in_macro_def);
return true;
// RUN: %clang_cc1 -E -C %s | FileCheck -check-prefix=CHECK-C -strict-whitespace %s
// CHECK-C: boo bork bar // zot
+// CHECK-C: ( 0 );
+// CHECK-C: ( 0,1,2 );
+// CHECK-C: ( 0,1,2 );
// RUN: %clang_cc1 -E -CC %s | FileCheck -check-prefix=CHECK-CC -strict-whitespace %s
// CHECK-CC: boo bork /* blah*/ bar // zot
+// CHECK-CC: (/**/0/**/);
+// CHECK-CC: (/**/0,1,2/**/);
+// CHECK-CC: (/**/0,1,2/**/);
// RUN: %clang_cc1 -E %s | FileCheck -strict-whitespace %s
// CHECK: boo bork bar
+// CHECK: ( 0 );
+// CHECK: ( 0,1,2 );
+// CHECK: ( 0,1,2 );
#define FOO bork // blah
boo FOO bar // zot
+#define M(/**/x/**/) (/**/x/**/)
+M(0);
+#define M2(/**/.../**/) (/**/__VA_ARGS__/**/)
+M2(0,1,2);
+#define M3(/**/x.../**/) (/**/x/**/)
+M3(0,1,2);