[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-29 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375964. cor3ntin added a comment. Fix EOF & unrenamed StringKind Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-29 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman accepted this revision. aaron.ballman added a comment. This revision is now accepted and ready to land. LGTM aside from two small nits. As for the modules question, if @rsmith doesn't get back to us, I think it's fine to address that post-commit. Comment at: clan

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-29 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375940. cor3ntin added a comment. Cleanup Diagnostics In LiteralSupport Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/ch

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/lib/Lex/LiteralSupport.cpp:1821-1823 +<< UDSuffixBuf << UDSuffix +<< SourceRange(UDSuffixTokLoc, UDSuffixTokLoc) +<< SourceRange(TokLoc, TokLoc); erichkeane wro

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Erich Keane via Phabricator via cfe-commits
erichkeane added inline comments. Comment at: clang/lib/Lex/LiteralSupport.cpp:1821-1823 +<< UDSuffixBuf << UDSuffix +<< SourceRange(UDSuffixTokLoc, UDSuffixTokLoc) +<< SourceRange(TokLoc, TokLoc); cor3ntin wrote: >

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Lex/LiteralSupport.cpp:108 + unsigned CharWidth, DiagnosticsEngine *Diags, + const LangOptions &Features, bool Unevaluated) { const char *EscapeBegin = ThisTokBuf; cor3ntin

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Lex/LiteralSupport.cpp:1821-1823 +<< UDSuffixBuf << UDSuffix +<< SourceRange(UDSuffixTokLoc, UDSuffixTokLoc) +<< SourceRange(TokLoc, TokLoc); aaron.ballman wrote

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375645. cor3ntin added a comment. Address Aaron's comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modern

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. Some naming nits. There are two open questions also: one about module behavior and one about a TODO comment in the patch. If we don't hear back about the modules question, I think that can be handled in a follow-up. Comment at: clang/include/cla

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375576. cor3ntin added a comment. Get rid of the extra loop by using a lambda Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-t

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375569. cor3ntin added a comment. Formatting Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modernize-unary-stat

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-28 Thread Erich Keane via Phabricator via cfe-commits
erichkeane added a comment. A couple of small things, otherwise I'm happy; but Aaron has some bigger opens above, plus clang-format, plus the modules from Richard. Comment at: clang/include/clang/Basic/DiagnosticLexKinds.td:257 + +def err_unevaluated_string_prefix : Error< +

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375476. cor3ntin added a comment. Rename commit Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modernize-unary-s

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375475. cor3ntin added a comment. Accept \r as an escape sequence n unevaluated string literal Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-e

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Erich Keane via Phabricator via cfe-commits
erichkeane added inline comments. Comment at: clang/lib/Lex/LiteralSupport.cpp:95-96 + case '?': + case 'n': + case 't': +return true; aaron.ballman wrote: > erichkeane wrote: > > aaron.ballman wrote: > > > aaron.ballman wrote: > > > > cor3ntin wrote: > >

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/include/clang/Basic/DiagnosticLexKinds.td:257 + +def err_unevaluated_string_prefix : Error< + "an unevaluated string literal cannot have an encoding prefix">; erichkeane wrote: > Is there value to combining

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375319. cor3ntin added a comment. Replace `Unevaluated` by an enum. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checke

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Erich Keane via Phabricator via cfe-commits
erichkeane added inline comments. Comment at: clang/include/clang/Basic/DiagnosticLexKinds.td:257 + +def err_unevaluated_string_prefix : Error< + "an unevaluated string literal cannot have an encoding prefix">; Is there value to combining these two diagnostics w

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375278. cor3ntin added a comment. Formatting and missing punctuation Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/check

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added reviewers: erichkeane, rjmccall. aaron.ballman added a comment. In general, I think this is shaping up nicely and is almost complete. I'm adding some additional reviewer though, as this is a somewhat experimental patch for a WG21 proposal that has not been accepted yet and I

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/include/clang/AST/Expr.h:1845 StringRef getString() const { -assert(getCharByteWidth() == 1 && +assert((isUnevaluated() || getCharByteWidth() == 1) && "This function is used in places that assume string

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375267. cor3ntin added a comment. Address Aaron's comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modern

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 375265. cor3ntin added a comment. Address Aaron's comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modern

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. In D105759#3024419 , @aaron.ballman wrote: > Should we also change this to parse an unevaluated string literal: > https://github.com/llvm/llvm-project/blob/main/clang/lib/Lex/ModuleMap.cpp#L1594 > Similar question for all the u

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Parse/ParseDecl.cpp:422-423 -ExprResult ArgExpr( -Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression())); +ExprResult ArgExpr(Actions.CorrectDelayedTyposInExpr( +ParseAttribut

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin marked 5 inline comments as done. cor3ntin added inline comments. Comment at: clang/include/clang/AST/Expr.h:1845 StringRef getString() const { -assert(getCharByteWidth() == 1 && +assert((isUnevaluated() || getCharByteWidth() == 1) && "This functio

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-09-27 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a comment. Should we also change this to parse an unevaluated string literal: https://github.com/llvm/llvm-project/blob/main/clang/lib/Lex/ModuleMap.cpp#L1594 Similar question for all the uses in OpenMP stemming from: https://github.com/llvm/llvm-project/blob/main/clang/lib/P

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-30 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. At @aaron.ballman request, here are some data collection trying to assert the amount of breakage On a corpus of 78M lines of C++ code corresponding to all the packages in vcpkg - Number of strings with encoding prefix in `_Pragma`: 3/3383 (all in test suits) - Number

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-25 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Parse/ParseDecl.cpp:422-423 -ExprResult ArgExpr( -Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression())); +ExprResult ArgExpr(Actions.CorrectDelayedTyposInExpr( +ParseAttribut

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-25 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a reviewer: rsmith. aaron.ballman added a subscriber: jfb. aaron.ballman added inline comments. Comment at: clang/lib/Lex/LiteralSupport.cpp:95-96 + case '?': + case 'n': + case 't': +return true; cor3ntin wrote: > aaron.ballman wrote:

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-20 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 367811. cor3ntin added a comment. Fix diagnostic for avaibility attributes Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-19 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added a comment. I addressed most of the comments. I still need to look at the 3 loops thing (I guess if the string is very long it could leave the cache? I am not actually sure it's an issue but maybe I can improve that), and then remain design questions Repository: rG LLVM Github

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-19 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 367409. cor3ntin marked 10 inline comments as done. cor3ntin added a comment. Address most of Aaron's comments Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files:

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-02 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin added inline comments. Comment at: clang/lib/Lex/LiteralSupport.cpp:95-96 + case '?': + case 'n': + case 't': +return true; aaron.ballman wrote: > Do you intend to miss a bunch of escapes like `\'` and `\r` (etc)? \' is there. I am less sure about

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-08-02 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/include/clang/AST/Expr.h:1839-1840 StringRef getString() const { -assert(getCharByteWidth() == 1 && - "This function is used in places that assume strings use char"); +assert(isUnevaluated() || +

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-07-10 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 357765. cor3ntin added a comment. clang format Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checkers/modernize-unary-st

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-07-10 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 357764. cor3ntin added a comment. Fix avaibility attribute parsing Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang-tools-extra/test/clang-tidy/checker

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-07-10 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 357746. cor3ntin added a comment. Herald added a project: clang-tools-extra. Fix tests, windows compilation, formatting Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D10575

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-07-10 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 357741. cor3ntin added a comment. Fix asserts firing Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang/include/clang/AST/Expr.h clang/include/clang/Ba

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-07-10 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 357723. cor3ntin added a comment. - Support unevaluated str8ing literal in deprecated/nodiscard attributes - Fix test formatting Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.o

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-07-10 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin updated this revision to Diff 357714. cor3ntin added a comment. clang-format Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D105759/new/ https://reviews.llvm.org/D105759 Files: clang/include/clang/AST/Expr.h clang/include/clang/Basic/Di

[PATCH] D105759: [WIP] Implement P2361 Unevaluated string literals

2021-07-10 Thread Corentin Jabot via Phabricator via cfe-commits
cor3ntin created this revision. cor3ntin requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This patch proposes to handle in an uniform fashion the parsing of strings that are never evaluated, in asm statement, static assert, attrributes, exte