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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits