aaron.ballman added inline comments.
================ Comment at: clang/lib/Parse/ParseExpr.cpp:3501-3503 + } else if (!AllowEvaluatedString && tok::isStringLiteral(Tok.getKind())) { + Expr = ParseUnevaluatedStringLiteralExpression(); + } else { ---------------- cor3ntin wrote: > 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. +1 I agree it's more involved, but it's also a more general solution that fits nicely in the parser design (we do this sort of thing for other parts of attribute parsing). 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