forked from OSchip/llvm-project
simplify the interface for creating ObjcForwardProtocolDecl
llvm-svn: 42705
This commit is contained in:
parent
f0d15d470f
commit
11eca782a3
|
@ -1036,13 +1036,12 @@ Sema::ActOnFindProtocolDeclaration(Scope *S,
|
|||
Action::DeclTy *
|
||||
Sema::ActOnForwardProtocolDeclaration(Scope *S, SourceLocation AtProtocolLoc,
|
||||
IdentifierInfo **IdentList, unsigned NumElts) {
|
||||
ObjcForwardProtocolDecl *FDecl = new ObjcForwardProtocolDecl(AtProtocolLoc,
|
||||
NumElts);
|
||||
llvm::SmallVector<ObjcProtocolDecl*, 32> Protocols;
|
||||
|
||||
for (unsigned i = 0; i != NumElts; ++i) {
|
||||
ObjcProtocolDecl *PDecl;
|
||||
PDecl = getObjCProtocolDecl(S, IdentList[i], AtProtocolLoc);
|
||||
if (!PDecl) {// Already seen?
|
||||
ObjcProtocolDecl *PDecl = getObjCProtocolDecl(S, IdentList[i],
|
||||
AtProtocolLoc);
|
||||
if (!PDecl) { // Already seen?
|
||||
PDecl = new ObjcProtocolDecl(SourceLocation(), 0, IdentList[i], true);
|
||||
// Chain & install the protocol decl into the identifier.
|
||||
PDecl->setNext(IdentList[i]->getFETokenInfo<ScopedDecl>());
|
||||
|
@ -1051,9 +1050,10 @@ Sema::ActOnForwardProtocolDeclaration(Scope *S, SourceLocation AtProtocolLoc,
|
|||
// Remember that this needs to be removed when the scope is popped.
|
||||
S->AddDecl(IdentList[i]);
|
||||
|
||||
FDecl->setForwardProtocolDecl((int)i, PDecl);
|
||||
Protocols.push_back(PDecl);
|
||||
}
|
||||
return FDecl;
|
||||
return new ObjcForwardProtocolDecl(AtProtocolLoc,
|
||||
&Protocols[0], Protocols.size());
|
||||
}
|
||||
|
||||
Sema::DeclTy *Sema::ActOnStartCategoryInterface(Scope* S,
|
||||
|
|
|
@ -381,12 +381,13 @@ class ObjcForwardProtocolDecl : public TypeDecl {
|
|||
ObjcProtocolDecl **ReferencedProtocols;
|
||||
unsigned NumReferencedProtocols;
|
||||
public:
|
||||
ObjcForwardProtocolDecl(SourceLocation L, unsigned nElts)
|
||||
ObjcForwardProtocolDecl(SourceLocation L,
|
||||
ObjcProtocolDecl **Elts, unsigned nElts)
|
||||
: TypeDecl(ObjcForwardProtocol, L, 0, 0) {
|
||||
NumReferencedProtocols = nElts;
|
||||
if (nElts) {
|
||||
ReferencedProtocols = new ObjcProtocolDecl*[nElts];
|
||||
memset(ReferencedProtocols, '\0', nElts*sizeof(ObjcProtocolDecl*));
|
||||
NumReferencedProtocols = nElts;
|
||||
memcpy(ReferencedProtocols, Elts, nElts*sizeof(ObjcProtocolDecl*));
|
||||
} else {
|
||||
ReferencedProtocols = 0;
|
||||
}
|
||||
|
@ -407,7 +408,6 @@ public:
|
|||
return ReferencedProtocols[idx];
|
||||
}
|
||||
|
||||
|
||||
static bool classof(const Decl *D) {
|
||||
return D->getKind() == ObjcForwardProtocol;
|
||||
}
|
||||
|
|
|
@ -326,7 +326,6 @@ private:
|
|||
friend class QualType;
|
||||
public:
|
||||
virtual void getAsStringInternal(std::string &InnerString) const = 0;
|
||||
|
||||
static bool classof(const Type *) { return true; }
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue