diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-09-09 23:07:22 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2019-09-09 23:07:22 +0000 |
| commit | 245ba2c25fef704abe8caa662c02b147eab12eac (patch) | |
| tree | b215b965cd15bf4de29f2d6b9b1fc4273b7833e7 | |
| parent | 06c8cb03caee18241263168cf4405b629940ab84 (diff) | |
| download | bcm5719-llvm-245ba2c25fef704abe8caa662c02b147eab12eac.tar.gz bcm5719-llvm-245ba2c25fef704abe8caa662c02b147eab12eac.zip | |
PR43242: Fix crash when typo-correcting to an operator() that should not
have been visible.
llvm-svn: 371468
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 11 | ||||
| -rw-r--r-- | clang/test/SemaCXX/lambda-expressions.cpp | 4 |
2 files changed, 5 insertions, 10 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 816d37e0b5e..98f98be1697 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -1990,16 +1990,7 @@ bool Sema::DiagnoseEmptyLookup(Scope *S, CXXScopeSpec &SS, LookupResult &R, R.clear(); } - // In Microsoft mode, if we are performing lookup from within a friend - // function definition declared at class scope then we must set - // DC to the lexical parent to be able to search into the parent - // class. - if (getLangOpts().MSVCCompat && isa<FunctionDecl>(DC) && - cast<FunctionDecl>(DC)->getFriendObjectKind() && - DC->getLexicalParent()->isRecord()) - DC = DC->getLexicalParent(); - else - DC = DC->getParent(); + DC = DC->getLookupParent(); } // We didn't find anything, so try to correct for a typo. diff --git a/clang/test/SemaCXX/lambda-expressions.cpp b/clang/test/SemaCXX/lambda-expressions.cpp index 311def9147f..5fff855102f 100644 --- a/clang/test/SemaCXX/lambda-expressions.cpp +++ b/clang/test/SemaCXX/lambda-expressions.cpp @@ -630,3 +630,7 @@ void Run(const int& points) { }; } } + +void operator_parens() { + [&](int x){ operator()(); }(0); // expected-error {{undeclared 'operator()'}} +} |

