[cfe-commits] r130968 - in /cfe/trunk: include/clang/AST/DeclCXX.h include/clang/Basic/DiagnosticCommonKinds.td include/clang/Basic/DiagnosticParseKinds.td include/clang/Sema/Sema.h lib/AST/ASTImporter.cpp lib/AST/DeclCXX.cpp lib/Parse/ParseDecl.cpp lib/Parse/ParseDeclCXX.cpp lib/Sema/SemaDecl.cpp lib/Sema/SemaDeclCXX.cpp lib/Sema/SemaTemplateInstantiateDecl.cpp

Sean Hunt scshunt at csclub.uwaterloo.ca
Thu May 5 17:11:07 PDT 2011


Author: coppro
Date: Thu May  5 19:11:07 2011
New Revision: 130968

URL: http://llvm.org/viewvc/llvm-project?rev=130968&view=rev
Log:
Revert r130912 in order to approach defaulted functions from the other
direction and not introduce things in the wrong place three different
times.

Modified:
    cfe/trunk/include/clang/AST/DeclCXX.h
    cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td
    cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
    cfe/trunk/include/clang/Sema/Sema.h
    cfe/trunk/lib/AST/ASTImporter.cpp
    cfe/trunk/lib/AST/DeclCXX.cpp
    cfe/trunk/lib/Parse/ParseDecl.cpp
    cfe/trunk/lib/Parse/ParseDeclCXX.cpp
    cfe/trunk/lib/Sema/SemaDecl.cpp
    cfe/trunk/lib/Sema/SemaDeclCXX.cpp
    cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp

Modified: cfe/trunk/include/clang/AST/DeclCXX.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/DeclCXX.h?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/DeclCXX.h (original)
+++ cfe/trunk/include/clang/AST/DeclCXX.h Thu May  5 19:11:07 2011
@@ -1501,9 +1501,6 @@
   /// @c !Implicit && ImplicitlyDefined.
   bool ImplicitlyDefined : 1;
 
-  /// IsDefaulted - Whether this constructor was explicitly defaulted
-  bool ExplicitlyDefaulted : 1;
-
   /// Support for base and member initializers.
   /// CtorInitializers - The arguments used to initialize the base
   /// or member.
@@ -1514,13 +1511,11 @@
                      const DeclarationNameInfo &NameInfo,
                      QualType T, TypeSourceInfo *TInfo,
                      bool isExplicitSpecified, bool isInline, 
-                     bool isImplicitlyDeclared, bool isExplicitlyDefaulted)
+                     bool isImplicitlyDeclared)
     : CXXMethodDecl(CXXConstructor, RD, StartLoc, NameInfo, T, TInfo, false,
                     SC_None, isInline, SourceLocation()),
       IsExplicitSpecified(isExplicitSpecified), ImplicitlyDefined(false),
-      ExplicitlyDefaulted(isExplicitlyDefaulted),
-      CtorInitializers(0), NumCtorInitializers(0)
-  {
+      CtorInitializers(0), NumCtorInitializers(0) {
     setImplicit(isImplicitlyDeclared);
   }
 
@@ -1531,8 +1526,7 @@
                                     const DeclarationNameInfo &NameInfo,
                                     QualType T, TypeSourceInfo *TInfo,
                                     bool isExplicit,
-                                    bool isInline, bool isImplicitlyDeclared,
-                                    bool isExplicitlyDefaulted);
+                                    bool isInline, bool isImplicitlyDeclared);
 
   /// isExplicitSpecified - Whether this constructor declaration has the
   /// 'explicit' keyword specified.
@@ -1564,28 +1558,6 @@
     ImplicitlyDefined = ID;
   }
 
-  /// isExplicitlyDefaulted - Whether this constructor was explicitly defaulted.
-  bool isExplicitlyDefaulted() const {
-    return ExplicitlyDefaulted;
-  }
-  /// setExplicitlyDefaulted - Set whether this contructor was explicitly
-  /// defaulted or not.
-  void setExplicitlyDefaulted(bool B) {
-    ExplicitlyDefaulted = B;
-  }
-
-  /// isDefaulted - True if this was either explicitly defaulted or is implicit
-  bool isDefaulted() const {
-    return ExplicitlyDefaulted || isImplicit();
-  }
-
-  /// isUserProvided - True if this function was neither defaulted nor deleted
-  /// on its first declaration.
-  bool isUserProvided() const {
-    const CXXConstructorDecl *Canonical = getCanonicalDecl();
-    return !Canonical->isDefaulted() && !Canonical->isDeleted();
-  }
-
   /// init_iterator - Iterates through the member/base initializer list.
   typedef CXXCtorInitializer **init_iterator;
 

Modified: cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticCommonKinds.td Thu May  5 19:11:07 2011
@@ -52,10 +52,6 @@
 def err_expected_namespace_name : Error<"expected namespace name">;
 def ext_variadic_templates : ExtWarn<
   "variadic templates are a C++0x extension">, InGroup<CXX0x>;
-def err_default_special_members : Error<
-  "Only special member functions may be defaulted">;
-def err_friends_define_only_namespace_scope : Error<
-  "Cannot define a function with non-namespace scope in a friend declaration">;
 
 // Sema && Lex
 def ext_longlong : Extension<

Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Thu May  5 19:11:07 2011
@@ -434,9 +434,6 @@
 
 def warn_deleted_function_accepted_as_extension: ExtWarn<
   "deleted function definition accepted as a C++0x extension">, InGroup<CXX0x>;
-def warn_defaulted_function_accepted_as_extension: ExtWarn<
-  "defaulted function definition accepted as a C++0x extension">,
-  InGroup<CXX0x>;
 
 // C++0x alias-declaration
 def ext_alias_declaration : ExtWarn<

Modified: cfe/trunk/include/clang/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/include/clang/Sema/Sema.h (original)
+++ cfe/trunk/include/clang/Sema/Sema.h Thu May  5 19:11:07 2011
@@ -3063,7 +3063,7 @@
                                  MultiTemplateParamsArg TemplateParameterLists,
                                  Expr *BitfieldWidth, const VirtSpecifiers &VS,
                                  Expr *Init, bool IsDefinition,
-                                 bool Deleted = false, bool Defaulted = false);
+                                 bool Deleted = false);
 
   MemInitResult ActOnMemInitializer(Decl *ConstructorD,
                                     Scope *S,

Modified: cfe/trunk/lib/AST/ASTImporter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTImporter.cpp?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ASTImporter.cpp (original)
+++ cfe/trunk/lib/AST/ASTImporter.cpp Thu May  5 19:11:07 2011
@@ -2397,8 +2397,7 @@
                                             NameInfo, T, TInfo, 
                                             FromConstructor->isExplicit(),
                                             D->isInlineSpecified(), 
-                                            D->isImplicit(),
-                                      FromConstructor->isExplicitlyDefaulted());
+                                            D->isImplicit());
   } else if (isa<CXXDestructorDecl>(D)) {
     ToFunction = CXXDestructorDecl::Create(Importer.getToContext(),
                                            cast<CXXRecordDecl>(DC),

Modified: cfe/trunk/lib/AST/DeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclCXX.cpp?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/lib/AST/DeclCXX.cpp (original)
+++ cfe/trunk/lib/AST/DeclCXX.cpp Thu May  5 19:11:07 2011
@@ -1301,7 +1301,7 @@
 CXXConstructorDecl *
 CXXConstructorDecl::Create(ASTContext &C, EmptyShell Empty) {
   return new (C) CXXConstructorDecl(0, SourceLocation(), DeclarationNameInfo(),
-                                    QualType(), 0, false, false, false, false);
+                                    QualType(), 0, false, false, false);
 }
 
 CXXConstructorDecl *
@@ -1311,14 +1311,12 @@
                            QualType T, TypeSourceInfo *TInfo,
                            bool isExplicit,
                            bool isInline,
-                           bool isImplicitlyDeclared,
-                           bool isExplicitlyDefaulted) {
+                           bool isImplicitlyDeclared) {
   assert(NameInfo.getName().getNameKind()
          == DeclarationName::CXXConstructorName &&
          "Name must refer to a constructor");
   return new (C) CXXConstructorDecl(RD, StartLoc, NameInfo, T, TInfo,
-                                    isExplicit, isInline, isImplicitlyDeclared,
-                                    isExplicitlyDefaulted);
+                                    isExplicit, isInline, isImplicitlyDeclared);
 }
 
 bool CXXConstructorDecl::isDefaultConstructor() const {

Modified: cfe/trunk/lib/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseDecl.cpp (original)
+++ cfe/trunk/lib/Parse/ParseDecl.cpp Thu May  5 19:11:07 2011
@@ -966,11 +966,6 @@
         Diag(DelLoc, diag::warn_deleted_function_accepted_as_extension);
 
       Actions.SetDeclDeleted(ThisDecl, DelLoc);
-    } else if (Tok.is(tok::kw_default)) {
-      SourceLocation DefLoc = ConsumeToken();
-      Diag(DefLoc, diag::err_default_special_members);
-
-      ThisDecl->setInvalidDecl();
     } else {
       if (getLang().CPlusPlus && D.getCXXScopeSpec().isSet()) {
         EnterScope(0);

Modified: cfe/trunk/lib/Parse/ParseDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDeclCXX.cpp?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseDeclCXX.cpp (original)
+++ cfe/trunk/lib/Parse/ParseDeclCXX.cpp Thu May  5 19:11:07 2011
@@ -1648,8 +1648,6 @@
   ExprResult BitfieldSize;
   ExprResult Init;
   bool Deleted = false;
-  bool Defaulted = false;
-  SourceLocation DefLoc;
 
   while (1) {
     // member-declarator:
@@ -1681,11 +1679,6 @@
           Diag(Tok, diag::warn_deleted_function_accepted_as_extension);
         ConsumeToken();
         Deleted = true;
-      } else if (Tok.is(tok::kw_delete)) {
-        if (!getLang().CPlusPlus0x)
-          Diag(Tok, diag::warn_defaulted_function_accepted_as_extension);
-        DefLoc = ConsumeToken();
-        Defaulted = true;
       } else {
         Init = ParseInitializer();
         if (Init.isInvalid())
@@ -1717,10 +1710,6 @@
       ThisDecl = Actions.ActOnFriendFunctionDecl(getCurScope(), DeclaratorInfo,
                                                  /*IsDefinition*/ false,
                                                  move(TemplateParams));
-      if (Defaulted) {
-        Diag(DefLoc, diag::err_friends_define_only_namespace_scope);
-        ThisDecl->setInvalidDecl();
-      }
     } else {
       ThisDecl = Actions.ActOnCXXMemberDeclarator(getCurScope(), AS,
                                                   DeclaratorInfo,
@@ -1728,7 +1717,7 @@
                                                   BitfieldSize.release(),
                                                   VS, Init.release(),
                                                   /*IsDefinition*/Deleted,
-                                                  Deleted, Defaulted);
+                                                  Deleted);
     }
     if (ThisDecl)
       DeclsInGroup.push_back(ThisDecl);
@@ -1755,7 +1744,6 @@
     BitfieldSize = 0;
     Init = 0;
     Deleted = false;
-    Defaulted = false;
 
     // Attributes are only allowed on the second declarator.
     MaybeParseGNUAttributes(DeclaratorInfo);

Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDecl.cpp Thu May  5 19:11:07 2011
@@ -4109,8 +4109,7 @@
                                          D.getSourceRange().getBegin(),
                                          NameInfo, R, TInfo,
                                          isExplicit, isInline,
-                                         /*isImplicitlyDeclared=*/false,
-                                         /*isExplicitlyDefaulted=*/false);
+                                         /*isImplicitlyDeclared=*/false);
     } else if (Name.getNameKind() == DeclarationName::CXXDestructorName) {
       // This is a C++ destructor declaration.
       if (DC->isRecord()) {

Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Thu May  5 19:11:07 2011
@@ -963,10 +963,7 @@
                                MultiTemplateParamsArg TemplateParameterLists,
                                ExprTy *BW, const VirtSpecifiers &VS,
                                ExprTy *InitExpr, bool IsDefinition,
-                               bool Deleted, bool Defaulted) {
-  // FIXME: Do something with this
-  (void) Defaulted;
-
+                               bool Deleted) {
   const DeclSpec &DS = D.getDeclSpec();
   DeclarationNameInfo NameInfo = GetNameForDeclarator(D);
   DeclarationName Name = NameInfo.getName();
@@ -5051,8 +5048,7 @@
                                  /*TInfo=*/0,
                                  /*isExplicit=*/false,
                                  /*isInline=*/true,
-                                 /*isImplicitlyDeclared=*/true,
-                                 /*isExplicitlyDefaulted=*/false);
+                                 /*isImplicitlyDeclared=*/true);
   DefaultCon->setAccess(AS_public);
   DefaultCon->setImplicit();
   DefaultCon->setTrivial(ClassDecl->hasTrivialConstructor());
@@ -5248,8 +5244,7 @@
         CXXConstructorDecl *NewCtor = CXXConstructorDecl::Create(
             Context, ClassDecl, UsingLoc, DNI, QualType(NewCtorType, 0),
             /*TInfo=*/0, BaseCtor->isExplicit(), /*Inline=*/true,
-            /*ImplicitlyDeclared=*/true,
-            /*isExplicitlyDefaulted*/false);
+            /*ImplicitlyDeclared=*/true);
         NewCtor->setAccess(BaseCtor->getAccess());
 
         // Build up the parameter decls and add them.
@@ -6198,8 +6193,7 @@
                                  /*TInfo=*/0,
                                  /*isExplicit=*/false,
                                  /*isInline=*/true,
-                                 /*isImplicitlyDeclared=*/true,
-                                 /*isExplicitlyDefaulted=*/false);
+                                 /*isImplicitlyDeclared=*/true);
   CopyConstructor->setAccess(AS_public);
   CopyConstructor->setTrivial(ClassDecl->hasTrivialCopyConstructor());
   

Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp?rev=130968&r1=130967&r2=130968&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp (original)
+++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp Thu May  5 19:11:07 2011
@@ -1375,8 +1375,7 @@
                                         StartLoc, NameInfo, T, TInfo,
                                         Constructor->isExplicit(),
                                         Constructor->isInlineSpecified(),
-                                        false,
-                                        Constructor->isExplicitlyDefaulted());
+                                        false);
   } else if (CXXDestructorDecl *Destructor = dyn_cast<CXXDestructorDecl>(D)) {
     Method = CXXDestructorDecl::Create(SemaRef.Context, Record,
                                        StartLoc, NameInfo, T, TInfo,





More information about the cfe-commits mailing list