From 92565b51aa25b7a15bcdfb628bc616866af194fb Mon Sep 17 00:00:00 2001 From: Kaelyn Takata Date: Fri, 27 Mar 2015 01:44:47 +0000 Subject: [PATCH] Diagnose delayed typos in an expr list that is in an invalid expression. Previously, if the expr list parsed fine but the expr to the left of the open parenthesis was invalid (when parsing the suffix of a postfix-expression), the parsed expr list was just ignored. Fixes PR23005. llvm-svn: 233347 --- clang/lib/Parse/ParseExpr.cpp | 3 +++ clang/test/SemaCXX/typo-correction-delayed.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp index b9127e90457a..72af14d068f2 100644 --- a/clang/lib/Parse/ParseExpr.cpp +++ b/clang/lib/Parse/ParseExpr.cpp @@ -1459,6 +1459,9 @@ Parser::ParsePostfixExpressionSuffix(ExprResult LHS) { })) { (void)Actions.CorrectDelayedTyposInExpr(LHS); LHS = ExprError(); + } else if (LHS.isInvalid()) { + for (auto &E : ArgExprs) + Actions.CorrectDelayedTyposInExpr(E); } } } diff --git a/clang/test/SemaCXX/typo-correction-delayed.cpp b/clang/test/SemaCXX/typo-correction-delayed.cpp index 64e6dd5966a2..3866a8a4cb72 100644 --- a/clang/test/SemaCXX/typo-correction-delayed.cpp +++ b/clang/test/SemaCXX/typo-correction-delayed.cpp @@ -193,3 +193,8 @@ void f() { TimeTicks::now(); // expected-error {{no member named 'now' in 'PR22297::TimeTicks'; did you mean 'Now'?}} } } + +namespace PR23005 { +void f() { int a = Unknown::b(c); } // expected-error {{use of undeclared identifier 'Unknown'}} +// expected-error@-1 {{use of undeclared identifier 'c'}} +}