diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index 3d7c58e5b3c3cd..a12c375c8d48c7 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -3597,7 +3597,7 @@ void Parser::injectEmbedTokens() { I += 2; } PP.EnterTokenStream(std::move(Toks), /*DisableMacroExpansion=*/true, - /*IsReinject=*/false); + /*IsReinject=*/true); ConsumeAnyToken(/*ConsumeCodeCompletionTok=*/true); } diff --git a/clang/test/Preprocessor/embed_weird.cpp b/clang/test/Preprocessor/embed_weird.cpp index 6eb2923152f153..90180e2d3cc704 100644 --- a/clang/test/Preprocessor/embed_weird.cpp +++ b/clang/test/Preprocessor/embed_weird.cpp @@ -116,6 +116,14 @@ void f1() { } #endif +static_assert(_Generic( +#embed __FILE__ limit(1) + , int : 1, default : 0)); + +static_assert(alignof(typeof( +#embed __FILE__ limit(1) +)) == alignof(int)); + struct HasChar { signed char ch; };