|
@@ -19,6 +19,11 @@ void TestObjCAtCatchStmt() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void TestObjCEncode() {
|
|
|
+ @encode(int);
|
|
|
+ @encode(typeof(^{;}));
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
// CHECK: "kind": "FunctionDecl",
|
|
|
// CHECK-NEXT: "loc": {
|
|
@@ -730,3 +735,141 @@ void TestObjCAtCatchStmt() {
|
|
|
// CHECK-NEXT: }
|
|
|
// CHECK-NEXT: ]
|
|
|
// CHECK-NEXT: }
|
|
|
+
|
|
|
+
|
|
|
+// CHECK: "kind": "FunctionDecl",
|
|
|
+// CHECK-NEXT: "loc": {
|
|
|
+// CHECK-NEXT: "col": 6,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 22
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "range": {
|
|
|
+// CHECK-NEXT: "begin": {
|
|
|
+// CHECK-NEXT: "col": 1,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 22
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "end": {
|
|
|
+// CHECK-NEXT: "col": 1,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 25
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "name": "TestObjCEncode",
|
|
|
+// CHECK-NEXT: "type": {
|
|
|
+// CHECK-NEXT: "qualType": "void ()"
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "inner": [
|
|
|
+// CHECK-NEXT: {
|
|
|
+// CHECK-NEXT: "id": "0x{{.*}}",
|
|
|
+// CHECK-NEXT: "kind": "CompoundStmt",
|
|
|
+// CHECK-NEXT: "range": {
|
|
|
+// CHECK-NEXT: "begin": {
|
|
|
+// CHECK-NEXT: "col": 23,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 22
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "end": {
|
|
|
+// CHECK-NEXT: "col": 1,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 25
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "inner": [
|
|
|
+// CHECK-NEXT: {
|
|
|
+// CHECK-NEXT: "id": "0x{{.*}}",
|
|
|
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
|
|
|
+// CHECK-NEXT: "range": {
|
|
|
+// CHECK-NEXT: "begin": {
|
|
|
+// CHECK-NEXT: "col": 3,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 23
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "end": {
|
|
|
+// CHECK-NEXT: "col": 14,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 23
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "type": {
|
|
|
+// CHECK-NEXT: "qualType": "char *"
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "valueCategory": "rvalue",
|
|
|
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
|
|
|
+// CHECK-NEXT: "inner": [
|
|
|
+// CHECK-NEXT: {
|
|
|
+// CHECK-NEXT: "id": "0x{{.*}}",
|
|
|
+// CHECK-NEXT: "kind": "ObjCEncodeExpr",
|
|
|
+// CHECK-NEXT: "range": {
|
|
|
+// CHECK-NEXT: "begin": {
|
|
|
+// CHECK-NEXT: "col": 3,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 23
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "end": {
|
|
|
+// CHECK-NEXT: "col": 14,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 23
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "type": {
|
|
|
+// CHECK-NEXT: "qualType": "char [2]"
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "valueCategory": "lvalue",
|
|
|
+// CHECK-NEXT: "encodedType": {
|
|
|
+// CHECK-NEXT: "qualType": "int"
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: ]
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: {
|
|
|
+// CHECK-NEXT: "id": "0x{{.*}}",
|
|
|
+// CHECK-NEXT: "kind": "ImplicitCastExpr",
|
|
|
+// CHECK-NEXT: "range": {
|
|
|
+// CHECK-NEXT: "begin": {
|
|
|
+// CHECK-NEXT: "col": 3,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 24
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "end": {
|
|
|
+// CHECK-NEXT: "col": 23,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 24
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "type": {
|
|
|
+// CHECK-NEXT: "qualType": "char *"
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "valueCategory": "rvalue",
|
|
|
+// CHECK-NEXT: "castKind": "ArrayToPointerDecay",
|
|
|
+// CHECK-NEXT: "inner": [
|
|
|
+// CHECK-NEXT: {
|
|
|
+// CHECK-NEXT: "id": "0x{{.*}}",
|
|
|
+// CHECK-NEXT: "kind": "ObjCEncodeExpr",
|
|
|
+// CHECK-NEXT: "range": {
|
|
|
+// CHECK-NEXT: "begin": {
|
|
|
+// CHECK-NEXT: "col": 3,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 24
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "end": {
|
|
|
+// CHECK-NEXT: "col": 23,
|
|
|
+// CHECK-NEXT: "file": "{{.*}}",
|
|
|
+// CHECK-NEXT: "line": 24
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "type": {
|
|
|
+// CHECK-NEXT: "qualType": "char [3]"
|
|
|
+// CHECK-NEXT: },
|
|
|
+// CHECK-NEXT: "valueCategory": "lvalue",
|
|
|
+// CHECK-NEXT: "encodedType": {
|
|
|
+// CHECK-NEXT: "desugaredQualType": "void (^)(void)",
|
|
|
+// CHECK-NEXT: "qualType": "typeof (^{ })"
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: ]
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: ]
|
|
|
+// CHECK-NEXT: }
|
|
|
+// CHECK-NEXT: ]
|
|
|
+// CHECK-NEXT: }
|