Per John's comment, it makes sense to ask isLambda on any CXXRecordDecl; make sure that's safe. Get rid of a check which is now unnecessary in Sema::getFunctionLevelDeclContext().
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147837 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/AST/DeclCXX.h b/include/clang/AST/DeclCXX.h
index 17c82ca..983139b 100644
--- a/include/clang/AST/DeclCXX.h
+++ b/include/clang/AST/DeclCXX.h
@@ -913,7 +913,7 @@
bool hasDeclaredDestructor() const { return data().DeclaredDestructor; }
/// \brief Determine whether this class describes a lambda function object.
- bool isLambda() const { return data().IsLambda; }
+ bool isLambda() const { return hasDefinition() && data().IsLambda; }
void setLambda(bool Lambda = true) { data().IsLambda = Lambda; }
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp
index 72073a1..8d35895 100644
--- a/lib/Sema/Sema.cpp
+++ b/lib/Sema/Sema.cpp
@@ -640,7 +640,6 @@
if (isa<BlockDecl>(DC) || isa<EnumDecl>(DC)) {
DC = DC->getParent();
} else if (isa<CXXMethodDecl>(DC) &&
- cast<CXXRecordDecl>(DC->getParent())->hasDefinition() &&
cast<CXXRecordDecl>(DC->getParent())->isLambda()) {
DC = DC->getParent()->getParent();
}