forked from OSchip/llvm-project
parent
f5bda316c5
commit
0b11172e8c
|
@ -31,17 +31,18 @@ void Sema::ActOnTranslationUnitScope(SourceLocation Loc, Scope *S) {
|
|||
/// For now, we will *not* install id as a built-in. FIXME: reconsider this.
|
||||
QualType Sema::GetObjcIdType(SourceLocation Loc) {
|
||||
assert(TUScope && "GetObjcIdType(): Top-level scope is null");
|
||||
if (Context.getObjcIdType().isNull()) {
|
||||
IdentifierInfo *IdIdent = &Context.Idents.get("id");
|
||||
ScopedDecl *IdDecl = LookupScopedDecl(IdIdent, Decl::IDNS_Ordinary,
|
||||
SourceLocation(), TUScope);
|
||||
TypedefDecl *ObjcIdTypedef = dyn_cast_or_null<TypedefDecl>(IdDecl);
|
||||
if (!ObjcIdTypedef) {
|
||||
Diag(Loc, diag::err_missing_id_definition);
|
||||
return QualType();
|
||||
}
|
||||
Context.setObjcIdType(ObjcIdTypedef);
|
||||
if (!Context.getObjcIdType().isNull())
|
||||
return Context.getObjcIdType();
|
||||
|
||||
IdentifierInfo *IdIdent = &Context.Idents.get("id");
|
||||
ScopedDecl *IdDecl = LookupScopedDecl(IdIdent, Decl::IDNS_Ordinary,
|
||||
SourceLocation(), TUScope);
|
||||
TypedefDecl *ObjcIdTypedef = dyn_cast_or_null<TypedefDecl>(IdDecl);
|
||||
if (!ObjcIdTypedef) {
|
||||
Diag(Loc, diag::err_missing_id_definition);
|
||||
return QualType();
|
||||
}
|
||||
Context.setObjcIdType(ObjcIdTypedef);
|
||||
return Context.getObjcIdType();
|
||||
}
|
||||
|
||||
|
|
|
@ -1194,9 +1194,9 @@ Sema::DeclTy *Sema::ActOnStartCategoryImplementation(
|
|||
if (!IDecl || IDecl->isForwardDecl())
|
||||
Diag(ClassLoc, diag::err_undef_interface, ClassName->getName());
|
||||
|
||||
// We cannot build type 'id' laziliy. It is needed when checking if a
|
||||
// We cannot build type 'id' lazily. It is needed when checking if a
|
||||
// type is an 'id' (via call to isObjcIdType) even if there is no
|
||||
// need for the dafult 'id' type.
|
||||
// need for the default 'id' type.
|
||||
// FIXME: Depending on the need to compare to 'id', this may have to go
|
||||
// somewhere else. At this time, this is a good enough place to do type
|
||||
// encoding of methods and ivars for the rewrite client.
|
||||
|
|
Loading…
Reference in New Issue