зеркало из https://github.com/microsoft/clang-1.git
Make sure we're always setting the previous declaration of an ObjCInterfaceDecl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146763 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
7ec59c78f1
Коммит
fd002a7027
|
@ -683,28 +683,29 @@ ObjCInterfaceDecl *ObjCInterfaceDecl::Create(ASTContext &C,
|
||||||
SourceLocation ClassLoc,
|
SourceLocation ClassLoc,
|
||||||
bool isInternal){
|
bool isInternal){
|
||||||
ObjCInterfaceDecl *Result = new (C) ObjCInterfaceDecl(DC, atLoc, Id, ClassLoc,
|
ObjCInterfaceDecl *Result = new (C) ObjCInterfaceDecl(DC, atLoc, Id, ClassLoc,
|
||||||
isInternal);
|
PrevDecl, isInternal);
|
||||||
C.getObjCInterfaceType(Result, PrevDecl);
|
C.getObjCInterfaceType(Result, PrevDecl);
|
||||||
|
|
||||||
if (PrevDecl) {
|
|
||||||
Result->Data = PrevDecl->Data;
|
|
||||||
Result->setPreviousDeclaration(PrevDecl);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjCInterfaceDecl *ObjCInterfaceDecl::CreateEmpty(ASTContext &C) {
|
ObjCInterfaceDecl *ObjCInterfaceDecl::CreateEmpty(ASTContext &C) {
|
||||||
return new (C) ObjCInterfaceDecl(0, SourceLocation(), 0, SourceLocation(),
|
return new (C) ObjCInterfaceDecl(0, SourceLocation(), 0, SourceLocation(),
|
||||||
false);
|
0, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjCInterfaceDecl::
|
ObjCInterfaceDecl::
|
||||||
ObjCInterfaceDecl(DeclContext *DC, SourceLocation atLoc, IdentifierInfo *Id,
|
ObjCInterfaceDecl(DeclContext *DC, SourceLocation atLoc, IdentifierInfo *Id,
|
||||||
SourceLocation CLoc, bool isInternal)
|
SourceLocation CLoc, ObjCInterfaceDecl *PrevDecl,
|
||||||
|
bool isInternal)
|
||||||
: ObjCContainerDecl(ObjCInterface, DC, Id, CLoc, atLoc),
|
: ObjCContainerDecl(ObjCInterface, DC, Id, CLoc, atLoc),
|
||||||
TypeForDecl(0), Data()
|
TypeForDecl(0), Data()
|
||||||
{
|
{
|
||||||
|
setPreviousDeclaration(PrevDecl);
|
||||||
|
|
||||||
|
// Copy the 'data' pointer over.
|
||||||
|
if (PrevDecl)
|
||||||
|
Data = PrevDecl->Data;
|
||||||
|
|
||||||
setImplicit(isInternal);
|
setImplicit(isInternal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4559,7 +4559,7 @@ Decl *ASTReader::GetDecl(DeclID ID) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DeclsLoaded[Index]) {
|
if (!DeclsLoaded[Index]) {
|
||||||
ReadDeclRecord(ID);
|
ReadDeclRecord(ID);
|
||||||
if (DeserializationListener)
|
if (DeserializationListener)
|
||||||
DeserializationListener->DeclRead(ID, DeclsLoaded[Index]);
|
DeserializationListener->DeclRead(ID, DeclsLoaded[Index]);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче