summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Sema/SemaDecl.cpp12
-rw-r--r--clang/test/SemaCXX/typo-correction-delayed.cpp4
2 files changed, 9 insertions, 7 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 298e4e705f6..d4b87ba615e 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -8806,12 +8806,10 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init,
Args = MultiExprArg(CXXDirectInit->getExprs(),
CXXDirectInit->getNumExprs());
- // Try to correct any TypoExprs if there might be some in the initialization
- // arguments (TypoExprs are marked as type-dependent).
- // TODO: Handle typo correction when there's more than one argument?
- if (Args.size() == 1 && Expr::hasAnyTypeDependentArguments(Args)) {
+ // Try to correct any TypoExprs in the initialization arguments.
+ for (size_t Idx = 0; Idx < Args.size(); ++Idx) {
ExprResult Res =
- CorrectDelayedTyposInExpr(Args[0], [this, Entity, Kind](Expr *E) {
+ CorrectDelayedTyposInExpr(Args[Idx], [this, Entity, Kind](Expr *E) {
InitializationSequence Init(*this, Entity, Kind, MultiExprArg(E));
return Init.Failed() ? ExprError() : E;
});
@@ -8819,8 +8817,8 @@ void Sema::AddInitializerToDecl(Decl *RealDecl, Expr *Init,
VDecl->setInvalidDecl();
return;
}
- if (Res.get() != Args[0])
- Args[0] = Res.get();
+ if (Res.get() != Args[Idx])
+ Args[Idx] = Res.get();
}
InitializationSequence InitSeq(*this, Entity, Kind, Args);
diff --git a/clang/test/SemaCXX/typo-correction-delayed.cpp b/clang/test/SemaCXX/typo-correction-delayed.cpp
index c91fb6ca65e..a9bc91e0308 100644
--- a/clang/test/SemaCXX/typo-correction-delayed.cpp
+++ b/clang/test/SemaCXX/typo-correction-delayed.cpp
@@ -143,3 +143,7 @@ void test() {
int x = variableX.getX();
}
}
+
+namespace PR21905 {
+int (*a) () = (void)Z; // expected-error-re {{use of undeclared identifier 'Z'{{$}}}}
+}
OpenPOWER on IntegriCloud