forked from OSchip/llvm-project
[libclang] Report CXType_ObjCId for 'const id', not CXType_Typedef.
rdar://11357807 llvm-svn: 157356
This commit is contained in:
parent
0ce90494e6
commit
03a384ec1f
|
@ -1,10 +1,10 @@
|
|||
@interface Foo
|
||||
@property (readonly) id x;
|
||||
-(int) mymethod;
|
||||
-(int) mymethod2:(id)x blah:(Class)y boo:(SEL)z;
|
||||
-(const id) mymethod2:(id)x blah:(Class)y boo:(SEL)z;
|
||||
@end
|
||||
|
||||
// RUN: c-index-test -test-print-typekind %s | FileCheck %s
|
||||
// CHECK: ObjCPropertyDecl=x:2:25 typekind=ObjCId [canonical=ObjCObjectPointer]
|
||||
// CHECK: ObjCInstanceMethodDecl=mymethod:3:8 typekind=Invalid [result=Int]
|
||||
// CHECK: ObjCInstanceMethodDecl=mymethod2:blah:boo::4:8 typekind=Invalid [result=Int] [args= ObjCId ObjCClass ObjCSel]
|
||||
// CHECK: ObjCInstanceMethodDecl=mymethod2:blah:boo::4:13 typekind=Invalid [result=ObjCId] [args= ObjCId ObjCClass ObjCSel]
|
||||
|
|
|
@ -96,14 +96,15 @@ static CXTypeKind GetTypeKind(QualType T) {
|
|||
CXType cxtype::MakeCXType(QualType T, CXTranslationUnit TU) {
|
||||
CXTypeKind TK = CXType_Invalid;
|
||||
|
||||
if (TU) {
|
||||
if (TU && !T.isNull()) {
|
||||
ASTContext &Ctx = static_cast<ASTUnit *>(TU->TUData)->getASTContext();
|
||||
if (Ctx.getLangOpts().ObjC1) {
|
||||
if (Ctx.isObjCIdType(T))
|
||||
QualType UnqualT = T.getUnqualifiedType();
|
||||
if (Ctx.isObjCIdType(UnqualT))
|
||||
TK = CXType_ObjCId;
|
||||
else if (Ctx.isObjCClassType(T))
|
||||
else if (Ctx.isObjCClassType(UnqualT))
|
||||
TK = CXType_ObjCClass;
|
||||
else if (Ctx.isObjCSelType(T))
|
||||
else if (Ctx.isObjCSelType(UnqualT))
|
||||
TK = CXType_ObjCSel;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue