[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