diff options
author | Mike Stump <mrs@apple.com> | 2009-05-16 07:06:02 +0000 |
---|---|---|
committer | Mike Stump <mrs@apple.com> | 2009-05-16 07:06:02 +0000 |
commit | c6e35aae23bc3cea7daf5ee075fa695c01c0f66f (patch) | |
tree | 628bee6ce0ee4423309c02baf6fba63e1e6bca27 | |
parent | d79bf3976ba83c8bd30dacf6a180fd3515610c38 (diff) |
Implement a FIXME, we now pass in the locations of the braces for enums.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71930 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Parse/Action.h | 3 | ||||
-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 | ||||
-rw-r--r-- | tools/clang-cc/PrintParserCallbacks.cpp | 17 |
6 files changed, 21 insertions, 17 deletions
diff --git a/include/clang/Parse/Action.h b/include/clang/Parse/Action.h index b65560bb24..6b137ce518 100644 --- a/include/clang/Parse/Action.h +++ b/include/clang/Parse/Action.h @@ -408,7 +408,8 @@ public: SourceLocation EqualLoc, ExprTy *Val) { return DeclPtrTy(); } - virtual void ActOnEnumBody(SourceLocation EnumLoc, DeclPtrTy EnumDecl, + virtual void ActOnEnumBody(SourceLocation EnumLoc, SourceLocation LBraceLoc, + SourceLocation RBraceLoc, DeclPtrTy EnumDecl, DeclPtrTy *Elements, unsigned NumElements) {} //===--------------------------------------------------------------------===// 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; diff --git a/tools/clang-cc/PrintParserCallbacks.cpp b/tools/clang-cc/PrintParserCallbacks.cpp index 55d0d7f4f9..ceb0500c3f 100644 --- a/tools/clang-cc/PrintParserCallbacks.cpp +++ b/tools/clang-cc/PrintParserCallbacks.cpp @@ -181,9 +181,9 @@ namespace { return DeclPtrTy(); } - //===--------------------------------------------------------------------===// + //===------------------------------------------------------------------===// // Type Parsing Callbacks. - //===--------------------------------------------------------------------===// + //===------------------------------------------------------------------===// virtual TypeResult ActOnTypeName(Scope *S, Declarator &D) { llvm::cout << __FUNCTION__ << "\n"; @@ -237,14 +237,15 @@ namespace { return DeclPtrTy(); } - virtual void ActOnEnumBody(SourceLocation EnumLoc, DeclPtrTy EnumDecl, + virtual void ActOnEnumBody(SourceLocation EnumLoc, SourceLocation LBraceLoc, + SourceLocation RBraceLoc, DeclPtrTy EnumDecl, DeclPtrTy *Elements, unsigned NumElements) { llvm::cout << __FUNCTION__ << "\n"; } - //===--------------------------------------------------------------------===// + //===------------------------------------------------------------------===// // Statement Parsing Callbacks. - //===--------------------------------------------------------------------===// + //===------------------------------------------------------------------===// virtual OwningStmtResult ActOnNullStmt(SourceLocation SemiLoc) { llvm::cout << __FUNCTION__ << "\n"; @@ -368,7 +369,7 @@ namespace { return StmtEmpty(); } virtual OwningStmtResult ActOnAsmStmt(SourceLocation AsmLoc, - bool IsSimple, + bool IsSimple, bool IsVolatile, unsigned NumOutputs, unsigned NumInputs, @@ -438,9 +439,9 @@ namespace { return StmtEmpty(); } - //===--------------------------------------------------------------------===// + //===------------------------------------------------------------------===// // Expression Parsing Callbacks. - //===--------------------------------------------------------------------===// + //===------------------------------------------------------------------===// // Primary Expressions. |