xref: /llvm-project/clang/test/ExtractAPI/emit-symbol-graph/multi_file.c (revision b1b24d751776d5fd2218a5cb43a8d103bf59fa32)
18e9145e4SAnkur // RUN: rm -rf %t
28e9145e4SAnkur // RUN: mkdir %t
38e9145e4SAnkur // RUN: split-file %s %t
48e9145e4SAnkur // RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \
58e9145e4SAnkur // RUN: %t/reference.main.json.in >> %t/reference.main.json
68e9145e4SAnkur // RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \
78e9145e4SAnkur // RUN: %t/reference.test.json.in >> %t/reference.test.json
8e05c1b46SDaniel Grumberg // RUN: %clang_cc1 %t/test.c %t/main.c -emit-symbol-graph --pretty-sgf \
9e05c1b46SDaniel Grumberg // RUN:   --symbol-graph-dir=%t/SymbolGraphs --product-name=multifile_test -triple=x86_64-apple-macosx12.0.0
108e9145e4SAnkur 
118e9145e4SAnkur // Test main.json
128e9145e4SAnkur // Generator version is not consistent across test runs, normalize it.
138e9145e4SAnkur // RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \
14e05c1b46SDaniel Grumberg // RUN: %t/SymbolGraphs/main.c.symbols.json > %t/output-normalized.json
158e9145e4SAnkur // RUN: diff %t/reference.main.json %t/output-normalized.json
168e9145e4SAnkur 
178e9145e4SAnkur // Test test.json
188e9145e4SAnkur // Generator version is not consistent across test runs, normalize it.
198e9145e4SAnkur // RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \
20e05c1b46SDaniel Grumberg // RUN: %t/SymbolGraphs/test.c.symbols.json > %t/output-normalized.json
218e9145e4SAnkur // RUN: diff %t/reference.test.json %t/output-normalized.json
228e9145e4SAnkur 
238e9145e4SAnkur // CHECK-NOT: error:
248e9145e4SAnkur // CHECK-NOT: warning:
258e9145e4SAnkur 
268e9145e4SAnkur //--- test.h
278e9145e4SAnkur #ifndef TEST_H
288e9145e4SAnkur #define TEST_H
298e9145e4SAnkur 
308e9145e4SAnkur int testfunc (int param1, int param2);
318e9145e4SAnkur void testfunc2 ();
328e9145e4SAnkur #endif /* TEST_H */
338e9145e4SAnkur 
348e9145e4SAnkur //--- test.c
358e9145e4SAnkur #include "test.h"
368e9145e4SAnkur 
378e9145e4SAnkur int testfunc(int param1, int param2) { return param1 + param2; }
388e9145e4SAnkur 
398e9145e4SAnkur void testfunc2() {}
408e9145e4SAnkur 
418e9145e4SAnkur //--- main.c
428e9145e4SAnkur #include "test.h"
438e9145e4SAnkur 
448e9145e4SAnkur int main ()
458e9145e4SAnkur {
468e9145e4SAnkur   testfunc2();
478e9145e4SAnkur   return 0;
488e9145e4SAnkur }
498e9145e4SAnkur 
508e9145e4SAnkur //--- reference.main.json.in
518e9145e4SAnkur {
528e9145e4SAnkur   "metadata": {
538e9145e4SAnkur     "formatVersion": {
548e9145e4SAnkur       "major": 0,
558e9145e4SAnkur       "minor": 5,
568e9145e4SAnkur       "patch": 3
578e9145e4SAnkur     },
588e9145e4SAnkur     "generator": "?"
598e9145e4SAnkur   },
608e9145e4SAnkur   "module": {
618e9145e4SAnkur     "name": "multifile_test",
628e9145e4SAnkur     "platform": {
638e9145e4SAnkur       "architecture": "x86_64",
648e9145e4SAnkur       "operatingSystem": {
658e9145e4SAnkur         "name": "macosx"
668e9145e4SAnkur       },
678e9145e4SAnkur       "vendor": "apple"
688e9145e4SAnkur     }
698e9145e4SAnkur   },
708e9145e4SAnkur   "relationships": [],
718e9145e4SAnkur   "symbols": [
728e9145e4SAnkur     {
738e9145e4SAnkur       "accessLevel": "public",
748e9145e4SAnkur       "declarationFragments": [
758e9145e4SAnkur         {
768e9145e4SAnkur           "kind": "typeIdentifier",
778e9145e4SAnkur           "preciseIdentifier": "c:I",
788e9145e4SAnkur           "spelling": "int"
798e9145e4SAnkur         },
808e9145e4SAnkur         {
818e9145e4SAnkur           "kind": "text",
828e9145e4SAnkur           "spelling": " "
838e9145e4SAnkur         },
848e9145e4SAnkur         {
858e9145e4SAnkur           "kind": "identifier",
868e9145e4SAnkur           "spelling": "testfunc"
878e9145e4SAnkur         },
888e9145e4SAnkur         {
898e9145e4SAnkur           "kind": "text",
908e9145e4SAnkur           "spelling": "("
918e9145e4SAnkur         },
928e9145e4SAnkur         {
938e9145e4SAnkur           "kind": "typeIdentifier",
948e9145e4SAnkur           "preciseIdentifier": "c:I",
958e9145e4SAnkur           "spelling": "int"
968e9145e4SAnkur         },
978e9145e4SAnkur         {
988e9145e4SAnkur           "kind": "text",
998e9145e4SAnkur           "spelling": " "
1008e9145e4SAnkur         },
1018e9145e4SAnkur         {
1028e9145e4SAnkur           "kind": "internalParam",
1038e9145e4SAnkur           "spelling": "param1"
1048e9145e4SAnkur         },
1058e9145e4SAnkur         {
1068e9145e4SAnkur           "kind": "text",
1078e9145e4SAnkur           "spelling": ", "
1088e9145e4SAnkur         },
1098e9145e4SAnkur         {
1108e9145e4SAnkur           "kind": "typeIdentifier",
1118e9145e4SAnkur           "preciseIdentifier": "c:I",
1128e9145e4SAnkur           "spelling": "int"
1138e9145e4SAnkur         },
1148e9145e4SAnkur         {
1158e9145e4SAnkur           "kind": "text",
1168e9145e4SAnkur           "spelling": " "
1178e9145e4SAnkur         },
1188e9145e4SAnkur         {
1198e9145e4SAnkur           "kind": "internalParam",
1208e9145e4SAnkur           "spelling": "param2"
1218e9145e4SAnkur         },
1228e9145e4SAnkur         {
1238e9145e4SAnkur           "kind": "text",
1248e9145e4SAnkur           "spelling": ");"
1258e9145e4SAnkur         }
1268e9145e4SAnkur       ],
1278e9145e4SAnkur       "functionSignature": {
1288e9145e4SAnkur         "parameters": [
1298e9145e4SAnkur           {
1308e9145e4SAnkur             "declarationFragments": [
1318e9145e4SAnkur               {
1328e9145e4SAnkur                 "kind": "typeIdentifier",
1338e9145e4SAnkur                 "preciseIdentifier": "c:I",
1348e9145e4SAnkur                 "spelling": "int"
1358e9145e4SAnkur               },
1368e9145e4SAnkur               {
1378e9145e4SAnkur                 "kind": "text",
1388e9145e4SAnkur                 "spelling": " "
1398e9145e4SAnkur               },
1408e9145e4SAnkur               {
1418e9145e4SAnkur                 "kind": "internalParam",
1428e9145e4SAnkur                 "spelling": "param1"
1438e9145e4SAnkur               }
1448e9145e4SAnkur             ],
1458e9145e4SAnkur             "name": "param1"
1468e9145e4SAnkur           },
1478e9145e4SAnkur           {
1488e9145e4SAnkur             "declarationFragments": [
1498e9145e4SAnkur               {
1508e9145e4SAnkur                 "kind": "typeIdentifier",
1518e9145e4SAnkur                 "preciseIdentifier": "c:I",
1528e9145e4SAnkur                 "spelling": "int"
1538e9145e4SAnkur               },
1548e9145e4SAnkur               {
1558e9145e4SAnkur                 "kind": "text",
1568e9145e4SAnkur                 "spelling": " "
1578e9145e4SAnkur               },
1588e9145e4SAnkur               {
1598e9145e4SAnkur                 "kind": "internalParam",
1608e9145e4SAnkur                 "spelling": "param2"
1618e9145e4SAnkur               }
1628e9145e4SAnkur             ],
1638e9145e4SAnkur             "name": "param2"
1648e9145e4SAnkur           }
1658e9145e4SAnkur         ],
1668e9145e4SAnkur         "returns": [
1678e9145e4SAnkur           {
1688e9145e4SAnkur             "kind": "typeIdentifier",
1698e9145e4SAnkur             "preciseIdentifier": "c:I",
1708e9145e4SAnkur             "spelling": "int"
1718e9145e4SAnkur           }
1728e9145e4SAnkur         ]
1738e9145e4SAnkur       },
1748e9145e4SAnkur       "identifier": {
1758e9145e4SAnkur         "interfaceLanguage": "c",
1768e9145e4SAnkur         "precise": "c:@F@testfunc"
1778e9145e4SAnkur       },
1788e9145e4SAnkur       "kind": {
1798e9145e4SAnkur         "displayName": "Function",
1808e9145e4SAnkur         "identifier": "c.func"
1818e9145e4SAnkur       },
1828e9145e4SAnkur       "location": {
1838e9145e4SAnkur         "position": {
18463537872SQuietMisdreavus           "character": 4,
185*b1b24d75SDaniel Grumberg           "line": 3
1868e9145e4SAnkur         },
1878e9145e4SAnkur         "uri": "file://INPUT_DIR/test.h"
1888e9145e4SAnkur       },
1898e9145e4SAnkur       "names": {
1908e9145e4SAnkur         "navigator": [
1918e9145e4SAnkur           {
1928e9145e4SAnkur             "kind": "identifier",
1938e9145e4SAnkur             "spelling": "testfunc"
1948e9145e4SAnkur           }
1958e9145e4SAnkur         ],
1968e9145e4SAnkur         "subHeading": [
1978e9145e4SAnkur           {
1988e9145e4SAnkur             "kind": "identifier",
1998e9145e4SAnkur             "spelling": "testfunc"
2008e9145e4SAnkur           }
2018e9145e4SAnkur         ],
2028e9145e4SAnkur         "title": "testfunc"
2038e9145e4SAnkur       },
2048e9145e4SAnkur       "pathComponents": [
2058e9145e4SAnkur         "testfunc"
2068e9145e4SAnkur       ]
2078e9145e4SAnkur     },
2088e9145e4SAnkur     {
2098e9145e4SAnkur       "accessLevel": "public",
2108e9145e4SAnkur       "declarationFragments": [
2118e9145e4SAnkur         {
2128e9145e4SAnkur           "kind": "typeIdentifier",
2138e9145e4SAnkur           "preciseIdentifier": "c:v",
2148e9145e4SAnkur           "spelling": "void"
2158e9145e4SAnkur         },
2168e9145e4SAnkur         {
2178e9145e4SAnkur           "kind": "text",
2188e9145e4SAnkur           "spelling": " "
2198e9145e4SAnkur         },
2208e9145e4SAnkur         {
2218e9145e4SAnkur           "kind": "identifier",
2228e9145e4SAnkur           "spelling": "testfunc2"
2238e9145e4SAnkur         },
2248e9145e4SAnkur         {
2258e9145e4SAnkur           "kind": "text",
2268e9145e4SAnkur           "spelling": "();"
2278e9145e4SAnkur         }
2288e9145e4SAnkur       ],
2298e9145e4SAnkur       "functionSignature": {
2308e9145e4SAnkur         "returns": [
2318e9145e4SAnkur           {
2328e9145e4SAnkur             "kind": "typeIdentifier",
2338e9145e4SAnkur             "preciseIdentifier": "c:v",
2348e9145e4SAnkur             "spelling": "void"
2358e9145e4SAnkur           }
2368e9145e4SAnkur         ]
2378e9145e4SAnkur       },
2388e9145e4SAnkur       "identifier": {
2398e9145e4SAnkur         "interfaceLanguage": "c",
2408e9145e4SAnkur         "precise": "c:@F@testfunc2"
2418e9145e4SAnkur       },
2428e9145e4SAnkur       "kind": {
2438e9145e4SAnkur         "displayName": "Function",
2448e9145e4SAnkur         "identifier": "c.func"
2458e9145e4SAnkur       },
2468e9145e4SAnkur       "location": {
2478e9145e4SAnkur         "position": {
24863537872SQuietMisdreavus           "character": 5,
249*b1b24d75SDaniel Grumberg           "line": 4
2508e9145e4SAnkur         },
2518e9145e4SAnkur         "uri": "file://INPUT_DIR/test.h"
2528e9145e4SAnkur       },
2538e9145e4SAnkur       "names": {
2548e9145e4SAnkur         "navigator": [
2558e9145e4SAnkur           {
2568e9145e4SAnkur             "kind": "identifier",
2578e9145e4SAnkur             "spelling": "testfunc2"
2588e9145e4SAnkur           }
2598e9145e4SAnkur         ],
2608e9145e4SAnkur         "subHeading": [
2618e9145e4SAnkur           {
2628e9145e4SAnkur             "kind": "identifier",
2638e9145e4SAnkur             "spelling": "testfunc2"
2648e9145e4SAnkur           }
2658e9145e4SAnkur         ],
2668e9145e4SAnkur         "title": "testfunc2"
2678e9145e4SAnkur       },
2688e9145e4SAnkur       "pathComponents": [
2698e9145e4SAnkur         "testfunc2"
2708e9145e4SAnkur       ]
2718e9145e4SAnkur     },
2728e9145e4SAnkur     {
2738e9145e4SAnkur       "accessLevel": "public",
2748e9145e4SAnkur       "declarationFragments": [
2758e9145e4SAnkur         {
2768e9145e4SAnkur           "kind": "typeIdentifier",
2778e9145e4SAnkur           "preciseIdentifier": "c:I",
2788e9145e4SAnkur           "spelling": "int"
2798e9145e4SAnkur         },
2808e9145e4SAnkur         {
2818e9145e4SAnkur           "kind": "text",
2828e9145e4SAnkur           "spelling": " "
2838e9145e4SAnkur         },
2848e9145e4SAnkur         {
2858e9145e4SAnkur           "kind": "identifier",
2868e9145e4SAnkur           "spelling": "main"
2878e9145e4SAnkur         },
2888e9145e4SAnkur         {
2898e9145e4SAnkur           "kind": "text",
2908e9145e4SAnkur           "spelling": "();"
2918e9145e4SAnkur         }
2928e9145e4SAnkur       ],
2938e9145e4SAnkur       "functionSignature": {
2948e9145e4SAnkur         "returns": [
2958e9145e4SAnkur           {
2968e9145e4SAnkur             "kind": "typeIdentifier",
2978e9145e4SAnkur             "preciseIdentifier": "c:I",
2988e9145e4SAnkur             "spelling": "int"
2998e9145e4SAnkur           }
3008e9145e4SAnkur         ]
3018e9145e4SAnkur       },
3028e9145e4SAnkur       "identifier": {
3038e9145e4SAnkur         "interfaceLanguage": "c",
3048e9145e4SAnkur         "precise": "c:@F@main"
3058e9145e4SAnkur       },
3068e9145e4SAnkur       "kind": {
3078e9145e4SAnkur         "displayName": "Function",
3088e9145e4SAnkur         "identifier": "c.func"
3098e9145e4SAnkur       },
3108e9145e4SAnkur       "location": {
3118e9145e4SAnkur         "position": {
31263537872SQuietMisdreavus           "character": 4,
31363537872SQuietMisdreavus           "line": 2
3148e9145e4SAnkur         },
3158e9145e4SAnkur         "uri": "file://INPUT_DIR/main.c"
3168e9145e4SAnkur       },
3178e9145e4SAnkur       "names": {
3188e9145e4SAnkur         "navigator": [
3198e9145e4SAnkur           {
3208e9145e4SAnkur             "kind": "identifier",
3218e9145e4SAnkur             "spelling": "main"
3228e9145e4SAnkur           }
3238e9145e4SAnkur         ],
3248e9145e4SAnkur         "subHeading": [
3258e9145e4SAnkur           {
3268e9145e4SAnkur             "kind": "identifier",
3278e9145e4SAnkur             "spelling": "main"
3288e9145e4SAnkur           }
3298e9145e4SAnkur         ],
3308e9145e4SAnkur         "title": "main"
3318e9145e4SAnkur       },
3328e9145e4SAnkur       "pathComponents": [
3338e9145e4SAnkur         "main"
3348e9145e4SAnkur       ]
3358e9145e4SAnkur     }
3368e9145e4SAnkur   ]
3378e9145e4SAnkur }
3388e9145e4SAnkur //--- reference.test.json.in
3398e9145e4SAnkur {
3408e9145e4SAnkur   "metadata": {
3418e9145e4SAnkur     "formatVersion": {
3428e9145e4SAnkur       "major": 0,
3438e9145e4SAnkur       "minor": 5,
3448e9145e4SAnkur       "patch": 3
3458e9145e4SAnkur     },
3468e9145e4SAnkur     "generator": "?"
3478e9145e4SAnkur   },
3488e9145e4SAnkur   "module": {
3498e9145e4SAnkur     "name": "multifile_test",
3508e9145e4SAnkur     "platform": {
3518e9145e4SAnkur       "architecture": "x86_64",
3528e9145e4SAnkur       "operatingSystem": {
3538e9145e4SAnkur         "name": "macosx"
3548e9145e4SAnkur       },
3558e9145e4SAnkur       "vendor": "apple"
3568e9145e4SAnkur     }
3578e9145e4SAnkur   },
3588e9145e4SAnkur   "relationships": [],
3598e9145e4SAnkur   "symbols": [
3608e9145e4SAnkur     {
3618e9145e4SAnkur       "accessLevel": "public",
3628e9145e4SAnkur       "declarationFragments": [
3638e9145e4SAnkur         {
3648e9145e4SAnkur           "kind": "typeIdentifier",
3658e9145e4SAnkur           "preciseIdentifier": "c:I",
3668e9145e4SAnkur           "spelling": "int"
3678e9145e4SAnkur         },
3688e9145e4SAnkur         {
3698e9145e4SAnkur           "kind": "text",
3708e9145e4SAnkur           "spelling": " "
3718e9145e4SAnkur         },
3728e9145e4SAnkur         {
3738e9145e4SAnkur           "kind": "identifier",
3748e9145e4SAnkur           "spelling": "testfunc"
3758e9145e4SAnkur         },
3768e9145e4SAnkur         {
3778e9145e4SAnkur           "kind": "text",
3788e9145e4SAnkur           "spelling": "("
3798e9145e4SAnkur         },
3808e9145e4SAnkur         {
3818e9145e4SAnkur           "kind": "typeIdentifier",
3828e9145e4SAnkur           "preciseIdentifier": "c:I",
3838e9145e4SAnkur           "spelling": "int"
3848e9145e4SAnkur         },
3858e9145e4SAnkur         {
3868e9145e4SAnkur           "kind": "text",
3878e9145e4SAnkur           "spelling": " "
3888e9145e4SAnkur         },
3898e9145e4SAnkur         {
3908e9145e4SAnkur           "kind": "internalParam",
3918e9145e4SAnkur           "spelling": "param1"
3928e9145e4SAnkur         },
3938e9145e4SAnkur         {
3948e9145e4SAnkur           "kind": "text",
3958e9145e4SAnkur           "spelling": ", "
3968e9145e4SAnkur         },
3978e9145e4SAnkur         {
3988e9145e4SAnkur           "kind": "typeIdentifier",
3998e9145e4SAnkur           "preciseIdentifier": "c:I",
4008e9145e4SAnkur           "spelling": "int"
4018e9145e4SAnkur         },
4028e9145e4SAnkur         {
4038e9145e4SAnkur           "kind": "text",
4048e9145e4SAnkur           "spelling": " "
4058e9145e4SAnkur         },
4068e9145e4SAnkur         {
4078e9145e4SAnkur           "kind": "internalParam",
4088e9145e4SAnkur           "spelling": "param2"
4098e9145e4SAnkur         },
4108e9145e4SAnkur         {
4118e9145e4SAnkur           "kind": "text",
4128e9145e4SAnkur           "spelling": ");"
4138e9145e4SAnkur         }
4148e9145e4SAnkur       ],
4158e9145e4SAnkur       "functionSignature": {
4168e9145e4SAnkur         "parameters": [
4178e9145e4SAnkur           {
4188e9145e4SAnkur             "declarationFragments": [
4198e9145e4SAnkur               {
4208e9145e4SAnkur                 "kind": "typeIdentifier",
4218e9145e4SAnkur                 "preciseIdentifier": "c:I",
4228e9145e4SAnkur                 "spelling": "int"
4238e9145e4SAnkur               },
4248e9145e4SAnkur               {
4258e9145e4SAnkur                 "kind": "text",
4268e9145e4SAnkur                 "spelling": " "
4278e9145e4SAnkur               },
4288e9145e4SAnkur               {
4298e9145e4SAnkur                 "kind": "internalParam",
4308e9145e4SAnkur                 "spelling": "param1"
4318e9145e4SAnkur               }
4328e9145e4SAnkur             ],
4338e9145e4SAnkur             "name": "param1"
4348e9145e4SAnkur           },
4358e9145e4SAnkur           {
4368e9145e4SAnkur             "declarationFragments": [
4378e9145e4SAnkur               {
4388e9145e4SAnkur                 "kind": "typeIdentifier",
4398e9145e4SAnkur                 "preciseIdentifier": "c:I",
4408e9145e4SAnkur                 "spelling": "int"
4418e9145e4SAnkur               },
4428e9145e4SAnkur               {
4438e9145e4SAnkur                 "kind": "text",
4448e9145e4SAnkur                 "spelling": " "
4458e9145e4SAnkur               },
4468e9145e4SAnkur               {
4478e9145e4SAnkur                 "kind": "internalParam",
4488e9145e4SAnkur                 "spelling": "param2"
4498e9145e4SAnkur               }
4508e9145e4SAnkur             ],
4518e9145e4SAnkur             "name": "param2"
4528e9145e4SAnkur           }
4538e9145e4SAnkur         ],
4548e9145e4SAnkur         "returns": [
4558e9145e4SAnkur           {
4568e9145e4SAnkur             "kind": "typeIdentifier",
4578e9145e4SAnkur             "preciseIdentifier": "c:I",
4588e9145e4SAnkur             "spelling": "int"
4598e9145e4SAnkur           }
4608e9145e4SAnkur         ]
4618e9145e4SAnkur       },
4628e9145e4SAnkur       "identifier": {
4638e9145e4SAnkur         "interfaceLanguage": "c",
4648e9145e4SAnkur         "precise": "c:@F@testfunc"
4658e9145e4SAnkur       },
4668e9145e4SAnkur       "kind": {
4678e9145e4SAnkur         "displayName": "Function",
4688e9145e4SAnkur         "identifier": "c.func"
4698e9145e4SAnkur       },
4708e9145e4SAnkur       "location": {
4718e9145e4SAnkur         "position": {
47263537872SQuietMisdreavus           "character": 4,
473*b1b24d75SDaniel Grumberg           "line": 3
4748e9145e4SAnkur         },
4758e9145e4SAnkur         "uri": "file://INPUT_DIR/test.h"
4768e9145e4SAnkur       },
4778e9145e4SAnkur       "names": {
4788e9145e4SAnkur         "navigator": [
4798e9145e4SAnkur           {
4808e9145e4SAnkur             "kind": "identifier",
4818e9145e4SAnkur             "spelling": "testfunc"
4828e9145e4SAnkur           }
4838e9145e4SAnkur         ],
4848e9145e4SAnkur         "subHeading": [
4858e9145e4SAnkur           {
4868e9145e4SAnkur             "kind": "identifier",
4878e9145e4SAnkur             "spelling": "testfunc"
4888e9145e4SAnkur           }
4898e9145e4SAnkur         ],
4908e9145e4SAnkur         "title": "testfunc"
4918e9145e4SAnkur       },
4928e9145e4SAnkur       "pathComponents": [
4938e9145e4SAnkur         "testfunc"
4948e9145e4SAnkur       ]
4958e9145e4SAnkur     },
4968e9145e4SAnkur     {
4978e9145e4SAnkur       "accessLevel": "public",
4988e9145e4SAnkur       "declarationFragments": [
4998e9145e4SAnkur         {
5008e9145e4SAnkur           "kind": "typeIdentifier",
5018e9145e4SAnkur           "preciseIdentifier": "c:v",
5028e9145e4SAnkur           "spelling": "void"
5038e9145e4SAnkur         },
5048e9145e4SAnkur         {
5058e9145e4SAnkur           "kind": "text",
5068e9145e4SAnkur           "spelling": " "
5078e9145e4SAnkur         },
5088e9145e4SAnkur         {
5098e9145e4SAnkur           "kind": "identifier",
5108e9145e4SAnkur           "spelling": "testfunc2"
5118e9145e4SAnkur         },
5128e9145e4SAnkur         {
5138e9145e4SAnkur           "kind": "text",
5148e9145e4SAnkur           "spelling": "();"
5158e9145e4SAnkur         }
5168e9145e4SAnkur       ],
5178e9145e4SAnkur       "functionSignature": {
5188e9145e4SAnkur         "returns": [
5198e9145e4SAnkur           {
5208e9145e4SAnkur             "kind": "typeIdentifier",
5218e9145e4SAnkur             "preciseIdentifier": "c:v",
5228e9145e4SAnkur             "spelling": "void"
5238e9145e4SAnkur           }
5248e9145e4SAnkur         ]
5258e9145e4SAnkur       },
5268e9145e4SAnkur       "identifier": {
5278e9145e4SAnkur         "interfaceLanguage": "c",
5288e9145e4SAnkur         "precise": "c:@F@testfunc2"
5298e9145e4SAnkur       },
5308e9145e4SAnkur       "kind": {
5318e9145e4SAnkur         "displayName": "Function",
5328e9145e4SAnkur         "identifier": "c.func"
5338e9145e4SAnkur       },
5348e9145e4SAnkur       "location": {
5358e9145e4SAnkur         "position": {
53663537872SQuietMisdreavus           "character": 5,
537*b1b24d75SDaniel Grumberg           "line": 4
5388e9145e4SAnkur         },
5398e9145e4SAnkur         "uri": "file://INPUT_DIR/test.h"
5408e9145e4SAnkur       },
5418e9145e4SAnkur       "names": {
5428e9145e4SAnkur         "navigator": [
5438e9145e4SAnkur           {
5448e9145e4SAnkur             "kind": "identifier",
5458e9145e4SAnkur             "spelling": "testfunc2"
5468e9145e4SAnkur           }
5478e9145e4SAnkur         ],
5488e9145e4SAnkur         "subHeading": [
5498e9145e4SAnkur           {
5508e9145e4SAnkur             "kind": "identifier",
5518e9145e4SAnkur             "spelling": "testfunc2"
5528e9145e4SAnkur           }
5538e9145e4SAnkur         ],
5548e9145e4SAnkur         "title": "testfunc2"
5558e9145e4SAnkur       },
5568e9145e4SAnkur       "pathComponents": [
5578e9145e4SAnkur         "testfunc2"
5588e9145e4SAnkur       ]
5598e9145e4SAnkur     }
5608e9145e4SAnkur   ]
5618e9145e4SAnkur }
562