]> granicus.if.org Git - clang/commitdiff
Revert r103770, "Added basic source locations to Elaborated and DependentName
authorDaniel Dunbar <daniel@zuster.org>
Fri, 14 May 2010 16:34:09 +0000 (16:34 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Fri, 14 May 2010 16:34:09 +0000 (16:34 +0000)
types.", it is breaking Clang bootstrap.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@103775 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/TypeLoc.h
lib/Frontend/PCHReader.cpp
lib/Frontend/PCHWriter.cpp
lib/Sema/SemaTemplate.cpp
lib/Sema/SemaType.cpp
lib/Sema/TreeTransform.h

index 19b0e976b837c9198e0422058b67a99627c8f212..9927ae7edbf4825da190193664a776b0c6acd1ea 100644 (file)
@@ -269,16 +269,6 @@ public:
     return TypeClass::classof(Ty);
   }
 
-  static bool classof(const TypeLoc *TL) {
-    return Derived::classofType(TL->getTypePtr());
-  }
-  static bool classof(const UnqualTypeLoc *TL) {
-    return Derived::classofType(TL->getTypePtr());
-  }
-  static bool classof(const Derived *TL) {
-    return true;
-  }
-
   TypeLoc getNextTypeLoc() const {
     return getNextTypeLoc(asDerived()->getInnerType());
   }
@@ -1241,75 +1231,18 @@ class DecltypeTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
                                                          DecltypeType> {
 };
 
-// FIXME: locations for the nested name specifier should be put in
-// NestedNameSpecifier
-struct ElaboratedLocInfo {
-  SourceLocation KeywordLoc;
-};
-
-class ElaboratedTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
-                                                 ElaboratedTypeLoc,
-                                                 ElaboratedType,
-                                                 ElaboratedLocInfo> {
-public:
-  SourceLocation getKeywordLoc() const {
-    return this->getLocalData()->KeywordLoc;
-  }
-  void setKeywordLoc(SourceLocation Loc) {
-    this->getLocalData()->KeywordLoc = Loc;
-  }
-
-  SourceRange getSourceRange() const {
-    return SourceRange(getKeywordLoc(), getKeywordLoc());
-  }
-
-  void initializeLocal(SourceLocation Loc) {
-    setKeywordLoc(Loc);
-  }
-
-  TypeLoc getNamedTypeLoc() const {
-    return getInnerTypeLoc();
-  }
-
-  QualType getInnerType() const {
-    return getTypePtr()->getNamedType();
-  }
-};
-
-// FIXME: locations for the nested name specifier should be put in
-// NestedNameSpecifier
-struct DependentNameLocInfo {
-  SourceLocation KeywordLoc;
-  SourceLocation NameLoc;
+// FIXME: locations for the nested name specifier;  at the very least,
+// a SourceRange.
+class ElaboratedTypeLoc :
+    public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
+                                     ElaboratedTypeLoc,
+                                     ElaboratedType> {
 };
 
-class DependentNameTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc,
-                                                    DependentNameTypeLoc,
-                                                    DependentNameType,
-                                                    DependentNameLocInfo> {
-public:
-  SourceLocation getKeywordLoc() const {
-    return this->getLocalData()->KeywordLoc;
-  }
-  void setKeywordLoc(SourceLocation Loc) {
-    this->getLocalData()->KeywordLoc = Loc;
-  }
-
-  SourceLocation getNameLoc() const {
-    return this->getLocalData()->NameLoc;
-  }
-  void setNameLoc(SourceLocation Loc) {
-    this->getLocalData()->NameLoc = Loc;
-  }
-
-  SourceRange getSourceRange() const {
-    return SourceRange(getKeywordLoc(), getNameLoc());
-  }
-
-  void initializeLocal(SourceLocation Loc) {
-    setKeywordLoc(Loc);
-    setNameLoc(Loc);
-  }
+// FIXME: locations for the typename keyword and nested name specifier.
+class DependentNameTypeLoc : public InheritingConcreteTypeLoc<TypeSpecTypeLoc,
+                                                         DependentNameTypeLoc,
+                                                         DependentNameType> {
 };
 
 }
index 4d5c001519d0c943898270f98ab8d868ac3cd617..c329f7b64f8d9d206c452ebdc8d734a947f9b025 100644 (file)
@@ -2354,13 +2354,12 @@ void TypeLocReader::VisitTemplateSpecializationTypeLoc(
                                           Record, Idx));
 }
 void TypeLocReader::VisitElaboratedTypeLoc(ElaboratedTypeLoc TL) {
-  TL.setKeywordLoc(SourceLocation::getFromRawEncoding(Record[Idx++]));
+  TL.setNameLoc(SourceLocation::getFromRawEncoding(Record[Idx++]));
 }
 void TypeLocReader::VisitInjectedClassNameTypeLoc(InjectedClassNameTypeLoc TL) {
   TL.setNameLoc(SourceLocation::getFromRawEncoding(Record[Idx++]));
 }
 void TypeLocReader::VisitDependentNameTypeLoc(DependentNameTypeLoc TL) {
-  TL.setKeywordLoc(SourceLocation::getFromRawEncoding(Record[Idx++]));
   TL.setNameLoc(SourceLocation::getFromRawEncoding(Record[Idx++]));
 }
 void TypeLocReader::VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL) {
index 5d84ca6530c78c3f5b1db63a5c1cc35afc9dc294..b323dcf4b8922493a28a9451168c21e9bcf36442 100644 (file)
@@ -396,13 +396,12 @@ void TypeLocWriter::VisitTemplateSpecializationTypeLoc(
     Writer.AddTemplateArgumentLoc(TL.getArgLoc(i), Record);
 }
 void TypeLocWriter::VisitElaboratedTypeLoc(ElaboratedTypeLoc TL) {
-  Writer.AddSourceLocation(TL.getKeywordLoc(), Record);
+  Writer.AddSourceLocation(TL.getNameLoc(), Record);
 }
 void TypeLocWriter::VisitInjectedClassNameTypeLoc(InjectedClassNameTypeLoc TL) {
   Writer.AddSourceLocation(TL.getNameLoc(), Record);
 }
 void TypeLocWriter::VisitDependentNameTypeLoc(DependentNameTypeLoc TL) {
-  Writer.AddSourceLocation(TL.getKeywordLoc(), Record);
   Writer.AddSourceLocation(TL.getNameLoc(), Record);
 }
 void TypeLocWriter::VisitObjCInterfaceTypeLoc(ObjCInterfaceTypeLoc TL) {
index d8b00cc816813b2a0d3f8056e226a61522207476..9009b4d89773bfc54f8ec8e246d1f8671b12519f 100644 (file)
@@ -5184,18 +5184,16 @@ Sema::ActOnDependentTag(Scope *S, unsigned TagSpec, TagUseKind TUK,
 
 static void FillTypeLoc(DependentNameTypeLoc TL,
                         SourceLocation TypenameLoc,
-                        SourceRange QualifierRange,
-                        SourceLocation NameLoc) {
-  // FIXME: qualifier range
-  TL.setKeywordLoc(TypenameLoc);
-  TL.setNameLoc(NameLoc);
+                        SourceRange QualifierRange) {
+  // FIXME: typename, qualifier range
+  TL.setNameLoc(TypenameLoc);
 }
 
 static void FillTypeLoc(ElaboratedTypeLoc TL,
                         SourceLocation TypenameLoc,
                         SourceRange QualifierRange) {
-  // FIXME: qualifier range and inner locations.
-  TL.setKeywordLoc(TypenameLoc);
+  // FIXME: typename, qualifier range
+  TL.setNameLoc(TypenameLoc);
 }
 
 Sema::TypeResult
@@ -5215,7 +5213,7 @@ Sema::ActOnTypenameType(SourceLocation TypenameLoc, const CXXScopeSpec &SS,
   if (isa<DependentNameType>(T)) {
     DependentNameTypeLoc TL = cast<DependentNameTypeLoc>(TSI->getTypeLoc());
     // FIXME: fill inner type loc
-    FillTypeLoc(TL, TypenameLoc, SS.getRange(), IdLoc);
+    FillTypeLoc(TL, TypenameLoc, SS.getRange());
   } else {
     ElaboratedTypeLoc TL = cast<ElaboratedTypeLoc>(TSI->getTypeLoc());
     // FIXME: fill inner type loc
@@ -5251,7 +5249,7 @@ Sema::ActOnTypenameType(SourceLocation TypenameLoc, const CXXScopeSpec &SS,
   TypeSourceInfo *TSI = Context.CreateTypeSourceInfo(T);
   DependentNameTypeLoc TL = cast<DependentNameTypeLoc>(TSI->getTypeLoc());
   // FIXME: fill inner type loc
-  FillTypeLoc(TL, TypenameLoc, SS.getRange(), TemplateLoc);
+  FillTypeLoc(TL, TypenameLoc, SS.getRange());
   return CreateLocInfoType(T, TSI).getAsOpaquePtr();
 }
 
@@ -5428,41 +5426,13 @@ CurrentInstantiationRebuilder::TransformDependentNameType(TypeLocBuilder &TLB,
   } else
     Result = getDerived().RebuildDependentNameType(T->getKeyword(),
                                                    NNS, T->getIdentifier(),
-                                                   TL.getSourceRange());
+                                                  SourceRange(TL.getNameLoc()));
 
   if (Result.isNull())
     return QualType();
 
-  if (const ElaboratedType* ElabT = Result->getAs<ElaboratedType>()) {
-    QualType NamedT = ElabT->getNamedType();
-    if (isa<TypedefType>(NamedT)) {
-      TypedefTypeLoc NamedTLoc = TLB.push<TypedefTypeLoc>(NamedT);
-      NamedTLoc.setNameLoc(TL.getNameLoc());
-    }
-    else if (isa<RecordType>(NamedT)) {
-      RecordTypeLoc NamedTLoc = TLB.push<RecordTypeLoc>(NamedT);
-      NamedTLoc.setNameLoc(TL.getNameLoc());
-    }
-    else if (isa<EnumType>(NamedT)) {
-      EnumTypeLoc NamedTLoc = TLB.push<EnumTypeLoc>(NamedT);
-      NamedTLoc.setNameLoc(TL.getNameLoc());
-    }
-    else if (isa<TemplateSpecializationType>(NamedT)) {
-      TemplateSpecializationTypeLoc NamedTLoc
-        = TLB.push<TemplateSpecializationTypeLoc>(NamedT);
-      // FIXME: fill locations
-      NamedTLoc.initializeLocal(SourceLocation());
-    }
-    else
-      llvm_unreachable("Unexpected type");
-    ElaboratedTypeLoc NewTL = TLB.push<ElaboratedTypeLoc>(Result);
-    NewTL.setKeywordLoc(TL.getKeywordLoc());
-  }
-  else {
-    DependentNameTypeLoc NewTL = TLB.push<DependentNameTypeLoc>(Result);
-    NewTL.setKeywordLoc(TL.getKeywordLoc());
-    NewTL.setNameLoc(TL.getNameLoc());
-  }
+  DependentNameTypeLoc NewTL = TLB.push<DependentNameTypeLoc>(Result);
+  NewTL.setNameLoc(TL.getNameLoc());
   return Result;
 }
 
index 84348f14750d340853f9af08712d02d0085dff6b..d926b9b61fca2f3e0b4e9ce3c01faec8a8efe213 100644 (file)
@@ -1455,15 +1455,9 @@ namespace {
         return;
       }
 
-      TypeLoc OldTL = TInfo->getTypeLoc();
-      if (TInfo->getType()->getAs<ElaboratedType>()) {
-        ElaboratedTypeLoc ElabTL = cast<ElaboratedTypeLoc>(OldTL);
-        TemplateSpecializationTypeLoc NamedTL =
-          cast<TemplateSpecializationTypeLoc>(ElabTL.getNamedTypeLoc());
-        TL.copy(NamedTL);
-      }
-      else
-        TL.copy(cast<TemplateSpecializationTypeLoc>(OldTL));
+      TemplateSpecializationTypeLoc OldTL =
+        cast<TemplateSpecializationTypeLoc>(TInfo->getTypeLoc());
+      TL.copy(OldTL);
     }
     void VisitTypeOfExprTypeLoc(TypeOfExprTypeLoc TL) {
       assert(DS.getTypeSpecType() == DeclSpec::TST_typeofExpr);
@@ -1494,23 +1488,6 @@ namespace {
           TL.setBuiltinLoc(DS.getTypeSpecWidthLoc());
       }
     }
-    void VisitElaboratedTypeLoc(ElaboratedTypeLoc TL) {
-      ElaboratedTypeKeyword Keyword
-        = TypeWithKeyword::getKeywordForTypeSpec(DS.getTypeSpecType());
-      TL.setKeywordLoc(Keyword != ETK_None
-                       ? DS.getTypeSpecTypeLoc()
-                       : SourceLocation());
-      Visit(TL.getNextTypeLoc().getUnqualifiedLoc());
-    }
-    void VisitDependentNameTypeLoc(DependentNameTypeLoc TL) {
-      ElaboratedTypeKeyword Keyword
-        = TypeWithKeyword::getKeywordForTypeSpec(DS.getTypeSpecType());
-      TL.setKeywordLoc(Keyword != ETK_None
-                       ? DS.getTypeSpecTypeLoc()
-                       : SourceLocation());
-      TL.setNameLoc(DS.getTypeSpecTypeLoc());
-    }
-
     void VisitTypeLoc(TypeLoc TL) {
       // FIXME: add other typespec types and change this to an assert.
       TL.initialize(DS.getTypeSpecTypeLoc());
index 4929bf7ba3b8cf36506f13d838004d4203bb3b26..35152617336ac2d48c7db13958cf39393914526b 100644 (file)
@@ -3247,22 +3247,22 @@ QualType
 TreeTransform<Derived>::TransformElaboratedType(TypeLocBuilder &TLB,
                                                 ElaboratedTypeLoc TL,
                                                 QualType ObjectType) {
-  QualType Named = getDerived().TransformType(TLB, TL.getNamedTypeLoc());
-  if (Named.isNull())
-    return QualType();
-
   ElaboratedType *T = TL.getTypePtr();
 
   NestedNameSpecifier *NNS = 0;
   // NOTE: the qualifier in an ElaboratedType is optional.
   if (T->getQualifier() != 0) {
     NNS = getDerived().TransformNestedNameSpecifier(T->getQualifier(),
-                                                    /* FIXME */ SourceRange(),
+                                                    SourceRange(),
                                                     ObjectType);
     if (!NNS)
       return QualType();
   }
 
+  QualType Named = getDerived().TransformType(T->getNamedType());
+  if (Named.isNull())
+    return QualType();
+
   QualType Result = TL.getType();
   if (getDerived().AlwaysRebuild() ||
       NNS != T->getQualifier() ||
@@ -3273,7 +3273,7 @@ TreeTransform<Derived>::TransformElaboratedType(TypeLocBuilder &TLB,
   }
 
   ElaboratedTypeLoc NewTL = TLB.push<ElaboratedTypeLoc>(Result);
-  NewTL.setKeywordLoc(TL.getKeywordLoc());
+  NewTL.setNameLoc(TL.getNameLoc());
 
   return Result;
 }
@@ -3315,36 +3315,9 @@ QualType TreeTransform<Derived>::TransformDependentNameType(TypeLocBuilder &TLB,
   if (Result.isNull())
     return QualType();
 
-  if (const ElaboratedType* ElabT = Result->getAs<ElaboratedType>()) {
-    QualType NamedT = ElabT->getNamedType();
-    if (isa<TypedefType>(NamedT)) {
-      TypedefTypeLoc NamedTLoc = TLB.push<TypedefTypeLoc>(NamedT);
-      NamedTLoc.setNameLoc(TL.getNameLoc());
-    }
-    else if (isa<RecordType>(NamedT)) {
-      RecordTypeLoc NamedTLoc = TLB.push<RecordTypeLoc>(NamedT);
-      NamedTLoc.setNameLoc(TL.getNameLoc());
-    }
-    else if (isa<EnumType>(NamedT)) {
-      EnumTypeLoc NamedTLoc = TLB.push<EnumTypeLoc>(NamedT);
-      NamedTLoc.setNameLoc(TL.getNameLoc());
-    }
-    else if (isa<TemplateSpecializationType>(NamedT)) {
-      TemplateSpecializationTypeLoc NamedTLoc
-        = TLB.push<TemplateSpecializationTypeLoc>(NamedT);
-      // FIXME: fill locations
-      NamedTLoc.initializeLocal(SourceLocation());
-    }
-    else
-      llvm_unreachable("Unexpected type");
-    ElaboratedTypeLoc NewTL = TLB.push<ElaboratedTypeLoc>(Result);
-    NewTL.setKeywordLoc(TL.getKeywordLoc());
-  }
-  else {
-    DependentNameTypeLoc NewTL = TLB.push<DependentNameTypeLoc>(Result);
-    NewTL.setKeywordLoc(TL.getKeywordLoc());
-    NewTL.setNameLoc(TL.getNameLoc());
-  }
+  DependentNameTypeLoc NewTL = TLB.push<DependentNameTypeLoc>(Result);
+  NewTL.setNameLoc(TL.getNameLoc());
+
   return Result;
 }