[PATCH] D96975: [Sema] Add some basic lambda capture fix-its
Kirill Bobyrev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Mar 5 10:44:58 PST 2021
kbobyrev added a comment.
Thanks! The code looks right, my comments are mostly for the comments around to validate my mental model of the code structure and behavior.
================
Comment at: clang/lib/Sema/SemaExpr.cpp:17413
+ StringRef Separator = LSI->NumExplicitCaptures > 0 ? ", " : "";
+ if (Var->getDeclName().isIdentifier() && !Var->getName().empty()) {
+ SourceLocation VarInsertLoc = LSI->IntroducerRange.getEnd();
----------------
Would be useful to have high-level comments for all three cases you have here. This one is for individual variables, right?
================
Comment at: clang/lib/Sema/SemaExpr.cpp:17422
+ << Var << /*reference*/ 1
+ << FixItHint::CreateInsertion(VarInsertLoc, FixBuffer);
+ }
----------------
Not having `return;` after this one or the other ones throws me off-guard and I came to the realization that what you intend here is: the function can issue all `FixItHint`s - for capturing a variable by value, reference and default captures by value and reference. So, in total there could be 4 `FixItHint` so that the user could choose between all of those and chose the one they want. Is that correct? I think this is something worth documenting.
================
Comment at: clang/lib/Sema/SemaExpr.cpp:17425
+
+ // Default capture mode must be specified first.
+ SourceLocation DefaultInsertLoc =
----------------
This comment seems a bit off to me? Could you please expand? (I also don't understand how this relates to the next line).
================
Comment at: clang/lib/Sema/SemaExpr.cpp:17620
Diag(Var->getLocation(), diag::note_previous_decl) << Var;
- if (cast<LambdaScopeInfo>(CSI)->Lambda)
+ if (cast<LambdaScopeInfo>(CSI)->Lambda) {
Diag(cast<LambdaScopeInfo>(CSI)->Lambda->getBeginLoc(),
----------------
now there are 3 `cast<LambdaScopeInfo>`, maybe introduce a variable? would've been much better with C++ init + condition but still
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96975/new/
https://reviews.llvm.org/D96975
More information about the cfe-commits
mailing list