]> granicus.if.org Git - clang/commitdiff
Implement a FIXME, we now pass in the locations of the braces for enums.
authorMike Stump <mrs@apple.com>
Sat, 16 May 2009 07:06:02 +0000 (07:06 +0000)
committerMike Stump <mrs@apple.com>
Sat, 16 May 2009 07:06:02 +0000 (07:06 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71930 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Parse/Action.h
lib/Parse/ParseDecl.cpp
lib/Sema/Sema.h
lib/Sema/SemaDecl.cpp
lib/Sema/SemaTemplateInstantiateDecl.cpp
tools/clang-cc/PrintParserCallbacks.cpp

index b65560bb2476c59bb4b70f6d84905884113d9f1e..6b137ce5187ca195d0b1ea130f0a8f23441acfd5 100644 (file)
@@ -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) {}
 
   //===--------------------------------------------------------------------===//
index cdf84bfad688164899850874d28569b004acbf65..db24d21c322782f328beb3a3f4b5e288ca494a71 100644 (file)
@@ -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.
index 817924a425f06a62d2a2184136481a59d3b93c97..9a12dfd97134a32eceea5cf2a19b67edfc05d323 100644 (file)
@@ -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);
index 860dda001f1398d3099f798ddfae66b597b7e484..1ed063ab40077b182b0d44e602f74d7c08a69665 100644 (file)
@@ -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);
index 382c2fa98ac13de40947b721402783598018ac83..fb4d27a49bf995facaacebe568a538bd70992b44 100644 (file)
@@ -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;
index 55d0d7f4f96b23df95dd7803d290837d44369fa9..ceb0500c3f64be3848ba878bc394f4305a6ad54e 100644 (file)
@@ -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.