Reverse r113397 until we decide what to do with

use of 'struct objc_object*' for 'is' (and others)
in clang.

llvm-svn: 113414
This commit is contained in:
Fariborz Jahanian 2010-09-08 21:36:35 +00:00
parent 260b4a8e92
commit db45278cbd
4 changed files with 1 additions and 45 deletions

View File

@ -932,9 +932,7 @@ public:
bool isObjCQualifiedClassType() const; // Class<foo>
bool isObjCObjectOrInterfaceType() const;
bool isObjCIdType() const; // id
bool isLegacyObjCIdType(ASTContext &) const; // struct_object *
bool isObjCClassType() const; // Class
bool isLegacyObjCClassType(ASTContext &) const; // struct_class *
bool isObjCSelType() const; // Class
bool isObjCBuiltinType() const; // 'id' or 'Class'
bool isTemplateTypeParmType() const; // C++ template type parameter

View File

@ -470,24 +470,6 @@ bool Type::isIntegralOrEnumerationType() const {
return false;
}
bool Type::isLegacyObjCIdType(ASTContext &Ctx) const {
if (const PointerType *PTTo = getAs<PointerType>()) {
QualType PointeeTy = PTTo->getPointeeType();
if (const RecordType *RTy = PointeeTy->getAs<RecordType>())
return RTy->getDecl()->getIdentifier() == &Ctx.Idents.get("objc_object");
}
return false;
}
bool Type::isLegacyObjCClassType(ASTContext &Ctx) const {
if (const PointerType *PTTo = getAs<PointerType>()) {
QualType PointeeTy = PTTo->getPointeeType();
if (const RecordType *RTy = PointeeTy->getAs<RecordType>())
return RTy->getDecl()->getIdentifier() == &Ctx.Idents.get("objc_class");
}
return false;
}
bool Type::isEnumeralType() const {
if (const TagType *TT = dyn_cast<TagType>(CanonicalType))
return TT->getDecl()->isEnum();

View File

@ -1274,12 +1274,8 @@ TypeSourceInfo *Sema::GetTypeForDeclarator(Declarator &D, Scope *S,
if (BTy->getKind() == BuiltinType::Float)
ArgTy = Context.DoubleTy;
}
} else if (getLangOptions().ObjC1) {
if (ArgTy->isLegacyObjCIdType(Context))
ArgTy = Context.getObjCIdType();
else if (ArgTy->isLegacyObjCClassType(Context))
ArgTy = Context.getObjCClassType();
}
ArgTys.push_back(ArgTy);
}

View File

@ -1,20 +0,0 @@
// RUN: %clang_cc1 -fsyntax-only -verify %s
// rdar:// 8400356
struct objc_object;
void f(id ptr) { } // expected-note {{previous definition is here}}
void f(objc_object* ptr) { } // expected-error {{redefinition of 'f'}}
struct objc_class;
void g(Class ptr) {} // expected-note {{previous definition is here}}
void g(objc_class* ptr) { } // expected-error {{redefinition of 'g'}}
void h(Class ptr, objc_object* ptr1) {} // expected-note {{previous definition is here}}
void h(objc_class* ptr, id ptr1) {} // expected-error {{redefinition of 'h'}}
void i(Class ptr, objc_object* ptr1);
void i(objc_class* ptr, id ptr1) {}
void i(objc_class* ptr, objc_object* ptr1);