diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Parse/ParseDecl.cpp | 6 | ||||
-rw-r--r-- | lib/Sema/Sema.h | 3 | ||||
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 5 | ||||
-rw-r--r-- | lib/Sema/SemaTemplateInstantiateDecl.cpp | 4 |
4 files changed, 10 insertions, 8 deletions
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index cdf84bfad6..db24d21c32 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/lib/Parse/ParseDecl.cpp @@ -1534,10 +1534,10 @@ void Parser::ParseEnumBody(SourceLocation StartLoc, DeclPtrTy EnumDecl) { } // Eat the }. - MatchRHSPunctuation(tok::r_brace, LBraceLoc); + SourceLocation RBraceLoc = MatchRHSPunctuation(tok::r_brace, LBraceLoc); - Actions.ActOnEnumBody(StartLoc, EnumDecl, &EnumConstantDecls[0], - EnumConstantDecls.size()); + Actions.ActOnEnumBody(StartLoc, LBraceLoc, RBraceLoc, EnumDecl, + &EnumConstantDecls[0], EnumConstantDecls.size()); Action::AttrTy *AttrList = 0; // If attributes exist after the identifier list, parse them. diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index 817924a425..9a12dfd971 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -489,7 +489,8 @@ public: DeclPtrTy LastEnumConstant, SourceLocation IdLoc, IdentifierInfo *Id, SourceLocation EqualLoc, ExprTy *Val); - virtual void ActOnEnumBody(SourceLocation EnumLoc, DeclPtrTy EnumDecl, + virtual void ActOnEnumBody(SourceLocation EnumLoc, SourceLocation LBraceLoc, + SourceLocation RBraceLoc, DeclPtrTy EnumDecl, DeclPtrTy *Elements, unsigned NumElements); DeclContext *getContainingDC(DeclContext *DC); diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 860dda001f..1ed063ab40 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -4215,9 +4215,8 @@ Sema::DeclPtrTy Sema::ActOnEnumConstant(Scope *S, DeclPtrTy theEnumDecl, return DeclPtrTy::make(New); } -// FIXME: For consistency with ActOnFields(), we should have the parser -// pass in the source location for the left/right braces. -void Sema::ActOnEnumBody(SourceLocation EnumLoc, DeclPtrTy EnumDeclX, +void Sema::ActOnEnumBody(SourceLocation EnumLoc, SourceLocation LBraceLoc, + SourceLocation RBraceLoc, DeclPtrTy EnumDeclX, DeclPtrTy *Elements, unsigned NumElements) { EnumDecl *Enum = cast<EnumDecl>(EnumDeclX.getAs<Decl>()); QualType EnumType = Context.getTypeDeclType(Enum); diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index 382c2fa98a..fb4d27a49b 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -245,7 +245,9 @@ Decl *TemplateDeclInstantiator::VisitEnumDecl(EnumDecl *D) { } } - SemaRef.ActOnEnumBody(Enum->getLocation(), Sema::DeclPtrTy::make(Enum), + // FIXME: Fixup LBraceLoc and RBraceLoc + SemaRef.ActOnEnumBody(Enum->getLocation(), SourceLocation(), SourceLocation(), + Sema::DeclPtrTy::make(Enum), &Enumerators[0], Enumerators.size()); return Enum; |