forked from OSchip/llvm-project
parent
587cbe1ef2
commit
ad8f750f71
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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!
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue