ObjCQualifiedClass is dead, remove it.

llvm-svn: 69783
This commit is contained in:
Chris Lattner 2009-04-22 06:50:37 +00:00
parent 587cbe1ef2
commit ad8f750f71
10 changed files with 2 additions and 78 deletions

View File

@ -1872,50 +1872,6 @@ public:
};
/// ObjCQualifiedClassType - to represent Class<protocol-list>.
///
/// Duplicate protocols are removed and protocol list is canonicalized to be in
/// alphabetical order.
class ObjCQualifiedClassType : public Type,
public llvm::FoldingSetNode {
// List of protocols for this protocol conforming 'id' type
// List is sorted on protocol name. No protocol is enterred more than once.
llvm::SmallVector<ObjCProtocolDecl*, 8> Protocols;
ObjCQualifiedClassType(ObjCProtocolDecl **Protos, unsigned NumP)
: Type(ObjCQualifiedClass, QualType()/*these are always canonical*/,
/*Dependent=*/false),
Protocols(Protos, Protos+NumP) { }
friend class ASTContext; // ASTContext creates these.
public:
ObjCProtocolDecl *getProtocols(unsigned i) const {
return Protocols[i];
}
unsigned getNumProtocols() const {
return Protocols.size();
}
ObjCProtocolDecl **getReferencedProtocols() {
return &Protocols[0];
}
typedef llvm::SmallVector<ObjCProtocolDecl*, 8>::const_iterator qual_iterator;
qual_iterator qual_begin() const { return Protocols.begin(); }
qual_iterator qual_end() const { return Protocols.end(); }
virtual void getAsStringInternal(std::string &InnerString) const;
void Profile(llvm::FoldingSetNodeID &ID);
static void Profile(llvm::FoldingSetNodeID &ID,
ObjCProtocolDecl **protocols, unsigned NumProtocols);
static bool classof(const Type *T) {
return T->getTypeClass() == ObjCQualifiedClass;
}
static bool classof(const ObjCQualifiedClassType *) { return true; }
};
// Inline function definitions.
/// getUnqualifiedType - Return the type without any qualifiers.

View File

@ -78,7 +78,6 @@ DEPENDENT_TYPE(Typename, Type)
TYPE(ObjCInterface, Type)
TYPE(ObjCQualifiedInterface, ObjCInterfaceType)
TYPE(ObjCQualifiedId, Type)
TYPE(ObjCQualifiedClass, Type)
#undef DEPENDENT_TYPE
#undef NON_CANONICAL_TYPE

View File

@ -317,9 +317,7 @@ namespace clang {
/// \brief An ObjCQualifiedInterfaceType record.
TYPE_OBJC_QUALIFIED_INTERFACE = 22,
/// \brief An ObjCQualifiedIdType record.
TYPE_OBJC_QUALIFIED_ID = 23,
/// \brief An ObjCQualifiedClassType record.
TYPE_OBJC_QUALIFIED_CLASS = 24
TYPE_OBJC_QUALIFIED_ID = 23
};
/// \brief The type IDs for special types constructed by semantic

View File

@ -431,7 +431,6 @@ ASTContext::getTypeInfo(const Type *T) {
// alignment requirements: getPointerInfo should take an AddrSpace.
return getTypeInfo(QualType(cast<ExtQualType>(T)->getBaseType(), 0));
case Type::ObjCQualifiedId:
case Type::ObjCQualifiedClass:
case Type::ObjCQualifiedInterface:
Width = Target.getPointerWidth(0);
Align = Target.getPointerAlign(0);
@ -3136,9 +3135,6 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS) {
case Type::FixedWidthInt:
// Distinct fixed-width integers are not compatible.
return QualType();
case Type::ObjCQualifiedClass:
// Distinct qualified classes are not compatible.
return QualType();
case Type::ExtQual:
// FIXME: ExtQual types can be compatible even if they're not
// identical!

View File

@ -768,8 +768,7 @@ bool Type::isScalarType() const {
isa<BlockPointerType>(CanonicalType) ||
isa<MemberPointerType>(CanonicalType) ||
isa<ComplexType>(CanonicalType) ||
isa<ObjCQualifiedIdType>(CanonicalType) ||
isa<ObjCQualifiedClassType>(CanonicalType);
isa<ObjCQualifiedIdType>(CanonicalType);
}
/// \brief Determines whether the type is a C++ aggregate type or C

View File

@ -582,7 +582,6 @@ llvm::DIType CGDebugInfo::getOrCreateType(QualType Ty,
case Type::MemberPointer:
case Type::TemplateSpecialization:
case Type::QualifiedName:
case Type::ObjCQualifiedClass:
// Unsupported types
return llvm::DIType();

View File

@ -378,7 +378,6 @@ const llvm::Type *CodeGenTypes::ConvertNewType(QualType T) {
}
case Type::ObjCQualifiedId:
case Type::ObjCQualifiedClass:
// Protocols don't influence the LLVM type.
return ConvertTypeRecursive(Context.getObjCIdType());

View File

@ -2103,13 +2103,7 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) {
Protos.push_back(cast<ObjCProtocolDecl>(GetDecl(Record[Idx++])));
return Context.getObjCQualifiedIdType(&Protos[0], NumProtos);
}
case pch::TYPE_OBJC_QUALIFIED_CLASS:
// FIXME: Deserialize ObjCQualifiedClassType
assert(false && "Cannot de-serialize ObjC qualified class types yet");
return QualType();
}
// Suppress a GCC warning
return QualType();
}

View File

@ -228,14 +228,6 @@ void PCHTypeWriter::VisitObjCQualifiedIdType(const ObjCQualifiedIdType *T) {
Code = pch::TYPE_OBJC_QUALIFIED_ID;
}
void
PCHTypeWriter::VisitObjCQualifiedClassType(const ObjCQualifiedClassType *T) {
Record.push_back(T->getNumProtocols());
for (unsigned I = 0, N = T->getNumProtocols(); I != N; ++I)
Writer.AddDeclRef(T->getProtocols(I), Record);
Code = pch::TYPE_OBJC_QUALIFIED_CLASS;
}
//===----------------------------------------------------------------------===//
// Declaration serialization
//===----------------------------------------------------------------------===//

View File

@ -540,14 +540,6 @@ InstantiateObjCQualifiedIdType(const ObjCQualifiedIdType *T,
return QualType();
}
QualType
TemplateTypeInstantiator::
InstantiateObjCQualifiedClassType(const ObjCQualifiedClassType *T,
unsigned Quals) const {
assert(false && "Objective-C types cannot be dependent");
return QualType();
}
/// \brief The actual implementation of Sema::InstantiateType().
QualType TemplateTypeInstantiator::Instantiate(QualType T) const {
// If T is not a dependent type, there is nothing to do.