diff options
author | Richard Trieu <rtrieu@google.com> | 2016-09-27 23:44:07 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2016-09-27 23:44:07 +0000 |
commit | 3d1235a97d805e00222f12dc11dfac83b9164551 (patch) | |
tree | 91de6dcdcfd0edb40495c1e8ba203cb8f25996a7 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | 08780529b3d6deadbf1e1a1a19ea9689241eb4c1 (diff) | |
download | bcm5719-llvm-3d1235a97d805e00222f12dc11dfac83b9164551.tar.gz bcm5719-llvm-3d1235a97d805e00222f12dc11dfac83b9164551.zip |
Revert r282547 and add test to show correct behavior.
llvm-svn: 282555
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 91c12d8f5c1..eb8c3d2cc83 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -13850,6 +13850,12 @@ void Sema::SetDeclDefaulted(Decl *Dcl, SourceLocation DefaultLoc) { 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 @@ void Sema::SetDeclDefaulted(Decl *Dcl, SourceLocation DefaultLoc) { 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; |