]> granicus.if.org Git - clang/commitdiff
[libclang 2/8] Add support for ObjCTypeParam
authorMichael Wu <mwu.code@gmail.com>
Fri, 3 Aug 2018 04:02:40 +0000 (04:02 +0000)
committerMichael Wu <mwu.code@gmail.com>
Fri, 3 Aug 2018 04:02:40 +0000 (04:02 +0000)
Summary:
This patch adds support to the libclang API for identifying ObjCTypeParams in CXTypes.

This patch depends on D49063 since both patches add new values to CXTypeKind.

Reviewers: yvvan, jbcoe

Reviewed By: yvvan

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D49066

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338807 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang-c/Index.h
test/Index/print-type.m
tools/libclang/CXType.cpp

index 170c658f57e9f868c82894d810996af35ac2857c..572d24acb24ccf83a01240b3aec6e2518e404b09 100644 (file)
@@ -3267,7 +3267,8 @@ enum CXTypeKind {
   CXType_OCLQueue = 159,
   CXType_OCLReserveID = 160,
 
-  CXType_ObjCObject = 161
+  CXType_ObjCObject = 161,
+  CXType_ObjCTypeParam = 162
 };
 
 /**
index 64a161aa45121df73b812bb7b325ceb6c8d2e16a..2afdfc0ff842c0446183c98eb816e135186d7a21 100644 (file)
@@ -7,6 +7,10 @@
 @property (class) int classProp;
 @end
 
+@interface Bar<SomeType> : Foo
+-(SomeType)generic;
+@end
+
 // RUN: c-index-test -test-print-type %s | FileCheck %s
 // CHECK: ObjCPropertyDecl=x:2:25 [readonly,] [type=id] [typekind=ObjCId] [canonicaltype=id] [canonicaltypekind=ObjCObjectPointer] [isPOD=1]
 // CHECK: ObjCInstanceMethodDecl=mymethod:3:8 [type=] [typekind=Invalid] [resulttype=int] [resulttypekind=Int] [isPOD=0]
@@ -17,3 +21,4 @@
 // CHECK: ParmDecl=j:5:49 (Definition) [Out,] [type=short *] [typekind=Pointer] [isPOD=1] [pointeetype=short] [pointeekind=Short]
 // CHECK: ParmDecl=p:6:36 (Definition) [type=__kindof Foo *] [typekind=ObjCObjectPointer] [canonicaltype=__kindof Foo *] [canonicaltypekind=ObjCObjectPointer] [basetype=Foo] [basekind=ObjCInterface] [isPOD=1] [pointeetype=Foo] [pointeekind=ObjCInterface]
 // CHECK: ObjCPropertyDecl=classProp:7:23 [class,] [type=int] [typekind=Int] [isPOD=1]
+// CHECK: ObjCInstanceMethodDecl=generic:11:12 [type=] [typekind=Invalid] [resulttype=SomeType] [resulttypekind=ObjCTypeParam] [isPOD=0]
index 81fd87ae3fa7d2fb2992ec2b99d11404c22056e0..d9e0371b47be7bcf4b3bc8ddeb35695a1ea4aac2 100644 (file)
@@ -100,6 +100,7 @@ static CXTypeKind GetTypeKind(QualType T) {
     TKCASE(ObjCInterface);
     TKCASE(ObjCObject);
     TKCASE(ObjCObjectPointer);
+    TKCASE(ObjCTypeParam);
     TKCASE(FunctionNoProto);
     TKCASE(FunctionProto);
     TKCASE(ConstantArray);
@@ -578,6 +579,7 @@ CXString clang_getTypeKindSpelling(enum CXTypeKind K) {
     TKIND(ObjCInterface);
     TKIND(ObjCObject);
     TKIND(ObjCObjectPointer);
+    TKIND(ObjCTypeParam);
     TKIND(FunctionNoProto);
     TKIND(FunctionProto);
     TKIND(ConstantArray);