forked from OSchip/llvm-project
Revisited my last patch to be able to do encoding of ivar types with 'id'.
llvm-svn: 43507
This commit is contained in:
parent
74a0ae2c2a
commit
18d7b30241
|
@ -1193,6 +1193,15 @@ Sema::DeclTy *Sema::ActOnStartCategoryImplementation(
|
|||
/// Check that class of this category is already completely declared.
|
||||
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
|
||||
// type is an 'id' (via call to isObjcIdType) even if there is no
|
||||
// need for the dafult '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.
|
||||
GetObjcIdType(AtCatImplLoc);
|
||||
|
||||
/// TODO: Check that CatName, category name, is not used in another
|
||||
// implementation.
|
||||
return CDecl;
|
||||
|
@ -1261,7 +1270,15 @@ Sema::DeclTy *Sema::ActOnStartClassImplementation(
|
|||
// Check that there is no duplicate implementation of this class.
|
||||
if (!ObjcImplementations.insert(ClassName))
|
||||
Diag(ClassLoc, diag::err_dup_implementation_class, ClassName->getName());
|
||||
|
||||
|
||||
// We cannot build type 'id' laziliy. 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.
|
||||
// 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.
|
||||
GetObjcIdType(AtClassImplLoc);
|
||||
|
||||
return IMPDecl;
|
||||
}
|
||||
|
||||
|
@ -1964,14 +1981,6 @@ Sema::DeclTy *Sema::ActOnMethodDeclaration(
|
|||
AttributeList *AttrList, tok::ObjCKeywordKind MethodDeclKind) {
|
||||
llvm::SmallVector<ParmVarDecl*, 16> Params;
|
||||
|
||||
// We cannot build type 'id' laziliy. 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.
|
||||
// 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.
|
||||
GetObjcIdType(MethodLoc);
|
||||
|
||||
for (unsigned i = 0; i < Sel.getNumArgs(); i++) {
|
||||
// FIXME: arg->AttrList must be stored too!
|
||||
QualType argType;
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
// RUN: clang -rewrite-test -verify %s
|
||||
|
||||
@interface Intf
|
||||
{
|
||||
id ivar;
|
||||
id ivar1[12];
|
||||
|
||||
id **ivar3;
|
||||
|
||||
id (*ivar4) (id, id);
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation Intf
|
||||
@end
|
Loading…
Reference in New Issue