summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorAlexis Hunt <alercah@gmail.com>2011-05-26 01:26:05 +0000
committerAlexis Hunt <alercah@gmail.com>2011-05-26 01:26:05 +0000
commitd051b871609d8a071c2421f2d4168e3725ba2fcb (patch)
tree1443ed56a78d15378db75edc69b458fdf80ffe01 /clang/lib/Sema/SemaDecl.cpp
parent7fac79e255a90b2d029e8e918c7c64fb1cb23696 (diff)
downloadbcm5719-llvm-d051b871609d8a071c2421f2d4168e3725ba2fcb.tar.gz
bcm5719-llvm-d051b871609d8a071c2421f2d4168e3725ba2fcb.zip
Implement a new warning for when adding a default argument to a method
makes it into a special member function. This is very bad and can lead to all sorts of nastiness including implicit member functions violating the One Definition Rule. This should probably be made ill-formed in a later version of the standard, but for now we'll just warn. llvm-svn: 132104
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index dae7ba20b1f..77bd5b79ae0 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -1505,14 +1505,14 @@ struct GNUCompatibleParamWarning {
/// getSpecialMember - get the special member enum for a method.
Sema::CXXSpecialMember Sema::getSpecialMember(const CXXMethodDecl *MD) {
if (const CXXConstructorDecl *Ctor = dyn_cast<CXXConstructorDecl>(MD)) {
+ if (Ctor->isDefaultConstructor())
+ return Sema::CXXDefaultConstructor;
+
if (Ctor->isCopyConstructor())
return Sema::CXXCopyConstructor;
-
+
if (Ctor->isMoveConstructor())
return Sema::CXXMoveConstructor;
-
- if (Ctor->isDefaultConstructor())
- return Sema::CXXDefaultConstructor;
} else if (isa<CXXDestructorDecl>(MD)) {
return Sema::CXXDestructor;
} else if (MD->isCopyAssignmentOperator()) {
OpenPOWER on IntegriCloud