[PATCH] D105759: Implement P2361 Unevaluated string literals
Corentin Jabot via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 27 08:29:33 PDT 2023
cor3ntin added inline comments.
================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:878-879
- if (!isIntOrBool(AL.getArgAsExpr(0))) {
+ Expr *First = AL.getArgAsExpr(0);
+ if (isa<StringLiteral>(First) || !isIntOrBool(First)) {
S.Diag(AL.getLoc(), diag::err_attribute_argument_n_type)
----------------
aaron.ballman wrote:
> cor3ntin wrote:
> > aaron.ballman wrote:
> > > Test coverage for these changes?
> > There is one somewhere, I don;t remember where, The reason we need to do that is that Unevaluated StringLiterals don''t have types
> Let's try to track that down, but... an unevaluated string literal still has a type, surely? It'd be `const char[]` for C++?
It doesn't because it doesn't exist past phase 6.
It's not unevaluated as in decltype, it's more unevaluated as it's a weird token that never participate in the program, the same way a pragma or an attribute don't have a type.
Note that we can revert that change if we do the whole tablegen thing
The relevant test is in test/SemaCXX/warn-thread-safety-parsing.cpp, L17
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105759/new/
https://reviews.llvm.org/D105759
More information about the cfe-commits
mailing list