[PATCH] D25206: [Parser] Correct typo after lambda capture initializer is parsed
Akira Hatanaka via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 25 17:04:39 PDT 2016
ahatanak updated this revision to Diff 75819.
ahatanak marked 2 inline comments as done.
ahatanak added a comment.
Skip the step to correct typo if ParseInitializer returns ExprError(). Add a test case that exercises the change.
https://reviews.llvm.org/D25206
Files:
lib/Parse/ParseExprCXX.cpp
test/SemaCXX/lambda-expressions.cpp
Index: test/SemaCXX/lambda-expressions.cpp
===================================================================
--- test/SemaCXX/lambda-expressions.cpp
+++ test/SemaCXX/lambda-expressions.cpp
@@ -525,3 +525,18 @@
decltype(a)::D b;
}
}
+
+namespace PR30566 {
+int name1; // expected-note {{'name1' declared here}}
+
+struct S1 {
+ template<class T>
+ S1(T t) { s = sizeof(t); }
+ int s;
+};
+
+void foo1() {
+ auto s0 = S1{[name=]() {}}; // expected-error 2 {{expected expression}}
+ auto s1 = S1{[name=name]() {}}; // expected-error {{use of undeclared identifier 'name'; did you mean 'name1'?}}
+}
+}
Index: lib/Parse/ParseExprCXX.cpp
===================================================================
--- lib/Parse/ParseExprCXX.cpp
+++ lib/Parse/ParseExprCXX.cpp
@@ -948,6 +948,8 @@
SourceLocation StartLoc = Tok.getLocation();
InMessageExpressionRAIIObject MaybeInMessageExpression(*this, true);
Init = ParseInitializer();
+ if (!Init.isInvalid())
+ Init = Actions.CorrectDelayedTyposInExpr(Init.get());
if (Tok.getLocation() != StartLoc) {
// Back out the lexing of the token after the initializer.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D25206.75819.patch
Type: text/x-patch
Size: 1192 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20161026/10b1c36b/attachment.bin>
More information about the cfe-commits
mailing list