cor3ntin added inline comments.
================ Comment at: clang/lib/Parse/ParseExpr.cpp:3501-3503 + } else if (!AllowEvaluatedString && tok::isStringLiteral(Tok.getKind())) { + Expr = ParseUnevaluatedStringLiteralExpression(); + } else { ---------------- aaron.ballman wrote: > cor3ntin wrote: > > aaron.ballman wrote: > > > I'm surprised we need special logic in `ParseExpressionList()` for > > > handling unevaluated string literals; I would have expected that to be > > > needed when parsing a string literal. Nothing changed in the grammar for > > > http://eel.is/c++draft/expr.post.general#nt:expression-list (or > > > initializer-list), so these changes seem wrong. Can you explain the > > > changes a bit more? > > We use `ParseExpressionList` when parsing attribute arguments, and some > > attributes have unevaluate string as argument - I agree with you that I'd > > rather find a better solution for attributes, but I came up empty. There is > > no further reason for this change, and you are right it does not match the > > grammar. > I was thinking we'd use a new kind of evaluation context for this. We'd enter > the evaluation context when we know we need to parse an expression that is an > unevaluated string literal which the string literal parser would pay > attention to. This would require knowing up-front when we want to parse an > unevaluated string literal, but we should have that information available to > us at parse time (I think). After offline discussion, i think what we want to be doing is to have a `ParseAtttributeArgumentList` function that is aware of whether the Nth argument is an unevaluated string - by means of modifying tablegen, and doing the right parsing accordingly. It would take care of all attributes automatically. Alas that's a tad more involved. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits