Revert r282547 and add test to show correct behavior.
llvm-svn: 282555
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index 91c12d8..eb8c3d2 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -13850,6 +13850,12 @@
CXXMethodDecl *MD = dyn_cast_or_null<CXXMethodDecl>(Dcl);
if (MD) {
+ if (MD->getParent()->isDependentType()) {
+ MD->setDefaulted();
+ MD->setExplicitlyDefaulted();
+ return;
+ }
+
CXXSpecialMember Member = getSpecialMember(MD);
if (Member == CXXInvalid) {
if (!MD->isInvalidDecl())
@@ -13860,8 +13866,6 @@
MD->setDefaulted();
MD->setExplicitlyDefaulted();
- if (MD->getParent()->isDependentType()) return;
-
// If this definition appears within the record, do the checking when
// the record is complete.
const FunctionDecl *Primary = MD;