[cfe-commits] r70519 - in /cfe/trunk: lib/Sema/SemaDeclCXX.cpp test/SemaCXX/destructor.cpp
Anders Carlsson
andersca at mac.com
Thu Apr 30 16:18:11 PDT 2009
Author: andersca
Date: Thu Apr 30 18:18:11 2009
New Revision: 70519
URL: http://llvm.org/viewvc/llvm-project?rev=70519&view=rev
Log:
C++ destructors can have a single unnamed void parameter. Fixes <rdar://problem/6841210>.
Modified:
cfe/trunk/lib/Sema/SemaDeclCXX.cpp
cfe/trunk/test/SemaCXX/destructor.cpp
Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=70519&r1=70518&r2=70519&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Thu Apr 30 18:18:11 2009
@@ -1351,6 +1351,13 @@
ClassDecl->addedConstructor(Context, Constructor);
}
+static inline bool
+FTIHasSingleVoidArgument(DeclaratorChunk::FunctionTypeInfo &FTI) {
+ return (FTI.NumArgs == 1 && !FTI.isVariadic && FTI.ArgInfo[0].Ident == 0 &&
+ FTI.ArgInfo[0].Param &&
+ FTI.ArgInfo[0].Param.getAs<ParmVarDecl>()->getType()->isVoidType());
+}
+
/// CheckDestructorDeclarator - Called by ActOnDeclarator to check
/// the well-formednes of the destructor declarator @p D with type @p
/// R. If there are any errors in the declarator, this routine will
@@ -1416,7 +1423,7 @@
}
// Make sure we don't have any parameters.
- if (FTI.NumArgs > 0) {
+ if (FTI.NumArgs > 0 && !FTIHasSingleVoidArgument(FTI)) {
Diag(D.getIdentifierLoc(), diag::err_destructor_with_params);
// Delete the parameters.
Modified: cfe/trunk/test/SemaCXX/destructor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/destructor.cpp?rev=70519&r1=70518&r2=70519&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/destructor.cpp (original)
+++ cfe/trunk/test/SemaCXX/destructor.cpp Thu Apr 30 18:18:11 2009
@@ -50,3 +50,7 @@
G::~G() { }
+// <rdar://problem/6841210>
+struct H {
+ ~H(void) { }
+};
More information about the cfe-commits
mailing list