summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2019-09-09 23:07:22 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2019-09-09 23:07:22 +0000
commit245ba2c25fef704abe8caa662c02b147eab12eac (patch)
treeb215b965cd15bf4de29f2d6b9b1fc4273b7833e7
parent06c8cb03caee18241263168cf4405b629940ab84 (diff)
downloadbcm5719-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.cpp11
-rw-r--r--clang/test/SemaCXX/lambda-expressions.cpp4
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()'}}
+}
OpenPOWER on IntegriCloud