diff options
| author | Anastasia Stulova <anastasia.stulova@arm.com> | 2017-05-08 16:05:54 +0000 |
|---|---|---|
| committer | Anastasia Stulova <anastasia.stulova@arm.com> | 2017-05-08 16:05:54 +0000 |
| commit | f16634c884b6e3aa1a573d0a1f4727103ca8ccf8 (patch) | |
| tree | a4b1859e22b8134d9576ce5a3f8b52d12963854f /clang/lib | |
| parent | 0fbdaa1f0c136ce8921beca6a9dee72c70134b1c (diff) | |
| download | bcm5719-llvm-f16634c884b6e3aa1a573d0a1f4727103ca8ccf8.tar.gz bcm5719-llvm-f16634c884b6e3aa1a573d0a1f4727103ca8ccf8.zip | |
[Sema] Fix typos handling in an overloadable call.
In C typos in arguments in a call of an overloadable function lead
to a failure of construction of CallExpr and following recovery does
not handle created delayed typos. This causes an assertion fail in
Sema::~Sema since Sema::DelayedTypos remains not empty.
The patch fixes that behavior by handling a call with arguments
having dependant types in the way that C++ does.
Differential Revision: https://reviews.llvm.org/D31764
Patch by Dmitry Borisenkov!
llvm-svn: 302435
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 849e978e2d8..c32c91e7064 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -5277,6 +5277,9 @@ ExprResult Sema::ActOnCallExpr(Scope *Scope, Expr *Fn, SourceLocation LParenLoc, // We aren't supposed to apply this logic if there's an '&' involved. if (!find.HasFormOfMemberPointer) { + if (Expr::hasAnyTypeDependentArguments(ArgExprs)) + return new (Context) CallExpr( + Context, Fn, ArgExprs, Context.DependentTy, VK_RValue, RParenLoc); OverloadExpr *ovl = find.Expression; if (UnresolvedLookupExpr *ULE = dyn_cast<UnresolvedLookupExpr>(ovl)) return BuildOverloadedCallExpr( |

