4 "script_declarations":{
8 "kind":"markup_section",
24 "kind":"markup_suffix",
25 "markup_suffix_less_than_question":{
39 "markup_suffix_name":{
50 {"kind":"whitespace","text":" ","offset":4,"width":1},
51 {"kind":"single_line_comment","text":"// strict","offset":5,"width":9},
52 {"kind":"end_of_line","text":"\n","offset":14,"width":1}
60 "kind":"expression_statement",
61 "expression_statement_expression":{
62 "kind":"function_call_expression",
63 "function_call_receiver":{
73 {"kind":"end_of_line","text":"\n","offset":15,"width":1},
75 "kind":"single_line_comment",
76 "text":"// ficticious functions with size-discernable names",
80 {"kind":"end_of_line","text":"\n","offset":67,"width":1}
86 "function_call_type_args":{"kind":"missing"},
87 "function_call_left_paren":{
101 "function_call_argument_list":{
108 "literal_expression":{
111 "kind":"single_quoted_string_literal",
123 "list_separator":{"kind":"missing"}
127 "function_call_right_paren":{
142 "expression_statement_semicolon":{
153 {"kind":"whitespace","text":" ","offset":76,"width":1},
155 "kind":"single_line_comment",
156 "text":"// normal function call w/o generics",
160 {"kind":"end_of_line","text":"\n","offset":113,"width":1}
167 "kind":"expression_statement",
168 "expression_statement_expression":{
169 "kind":"function_call_expression",
170 "function_call_receiver":{
184 "function_call_type_args":{
185 "kind":"type_arguments",
186 "type_arguments_left_angle":{
200 "type_arguments_types":{
206 "kind":"simple_type_specifier",
207 "simple_type_specifier":{
222 "list_separator":{"kind":"missing"}
226 "type_arguments_right_angle":{
241 "function_call_left_paren":{
255 "function_call_argument_list":{
262 "literal_expression":{
265 "kind":"single_quoted_string_literal",
277 "list_separator":{"kind":"missing"}
281 "function_call_right_paren":{
296 "expression_statement_semicolon":{
307 {"kind":"whitespace","text":" ","offset":134,"width":1},
309 "kind":"single_line_comment",
310 "text":"// annotated function call",
314 {"kind":"end_of_line","text":"\n","offset":161,"width":1}
321 "kind":"expression_statement",
322 "expression_statement_expression":{
323 "kind":"function_call_expression",
324 "function_call_receiver":{
338 "function_call_type_args":{"kind":"missing"},
339 "function_call_left_paren":{
353 "function_call_argument_list":{
359 "kind":"binary_expression",
360 "binary_left_operand":{
362 "literal_expression":{
365 "kind":"decimal_literal",
372 "trailing":[{"kind":"whitespace","text":" ","offset":167,"width":1}],
387 "trailing":[{"kind":"whitespace","text":" ","offset":169,"width":1}],
391 "binary_right_operand":{
393 "literal_expression":{
396 "kind":"decimal_literal",
419 "trailing":[{"kind":"whitespace","text":" ","offset":172,"width":1}],
427 "kind":"tuple_expression",
428 "tuple_expression_keyword":{
442 "tuple_expression_left_paren":{
456 "tuple_expression_items":{"kind":"missing"},
457 "tuple_expression_right_paren":{
472 "list_separator":{"kind":"missing"}
476 "function_call_right_paren":{
491 "expression_statement_semicolon":{
502 {"kind":"whitespace","text":" ","offset":182,"width":1},
504 "kind":"single_line_comment",
505 "text":"// not generics annotated, but seems so a little",
509 {"kind":"end_of_line","text":"\n","offset":231,"width":1}
516 "kind":"expression_statement",
517 "expression_statement_expression":{
518 "kind":"function_call_expression",
519 "function_call_receiver":{
533 "function_call_type_args":{"kind":"missing"},
534 "function_call_left_paren":{
548 "function_call_argument_list":{
554 "kind":"binary_expression",
555 "binary_left_operand":{
565 "trailing":[{"kind":"whitespace","text":" ","offset":240,"width":1}],
579 "trailing":[{"kind":"whitespace","text":" ","offset":242,"width":1}],
583 "binary_right_operand":{
585 "literal_expression":{
588 "kind":"decimal_literal",
611 "trailing":[{"kind":"whitespace","text":" ","offset":245,"width":1}],
619 "kind":"binary_expression",
620 "binary_left_operand":{
622 "literal_expression":{
625 "kind":"decimal_literal",
632 "trailing":[{"kind":"whitespace","text":" ","offset":248,"width":1}],
647 "trailing":[{"kind":"whitespace","text":" ","offset":250,"width":1}],
651 "binary_right_operand":{
666 "list_separator":{"kind":"missing"}
670 "function_call_right_paren":{
685 "expression_statement_semicolon":{
696 {"kind":"whitespace","text":" ","offset":256,"width":1},
698 "kind":"single_line_comment",
699 "text":"// certainly not annotated, but hard to tell",
703 {"kind":"end_of_line","text":"\n","offset":301,"width":1}
710 "kind":"expression_statement",
711 "expression_statement_expression":{
712 "kind":"function_call_expression",
713 "function_call_receiver":{
727 "function_call_type_args":{"kind":"missing"},
728 "function_call_left_paren":{
742 "function_call_argument_list":{
748 "kind":"function_call_expression",
749 "function_call_receiver":{
763 "function_call_type_args":{
764 "kind":"type_arguments",
765 "type_arguments_left_angle":{
779 "type_arguments_types":{
785 "kind":"simple_type_specifier",
786 "simple_type_specifier":{
819 "kind":"simple_type_specifier",
820 "simple_type_specifier":{
835 "list_separator":{"kind":"missing"}
839 "type_arguments_right_angle":{
854 "function_call_left_paren":{
868 "function_call_argument_list":{"kind":"missing"},
869 "function_call_right_paren":{
884 "list_separator":{"kind":"missing"}
888 "function_call_right_paren":{
903 "expression_statement_semicolon":{
914 {"kind":"whitespace","text":" ","offset":327,"width":1},
916 "kind":"single_line_comment",
917 "text":"// annotated inside an argument list",
921 {"kind":"end_of_line","text":"\n","offset":364,"width":1}
928 "kind":"expression_statement",
929 "expression_statement_expression":{
930 "kind":"binary_expression",
931 "binary_left_operand":{
933 "literal_expression":{
936 "kind":"decimal_literal",
943 "trailing":[{"kind":"whitespace","text":" ","offset":367,"width":1}],
958 "trailing":[{"kind":"whitespace","text":" ","offset":369,"width":1}],
962 "binary_right_operand":{
963 "kind":"function_call_expression",
964 "function_call_receiver":{
978 "function_call_type_args":{
979 "kind":"type_arguments",
980 "type_arguments_left_angle":{
994 "type_arguments_types":{
1000 "kind":"simple_type_specifier",
1001 "simple_type_specifier":{
1016 "list_separator":{"kind":"missing"}
1020 "type_arguments_right_angle":{
1035 "function_call_left_paren":{
1049 "function_call_argument_list":{
1056 "literal_expression":{
1059 "kind":"single_quoted_string_literal",
1071 "list_separator":{"kind":"missing"}
1075 "function_call_right_paren":{
1091 "expression_statement_semicolon":{
1101 "trailing":[{"kind":"end_of_line","text":"\n","offset":390,"width":1}],
1107 "kind":"expression_statement",
1108 "expression_statement_expression":{
1109 "kind":"binary_expression",
1110 "binary_left_operand":{
1112 "variable_expression":{
1121 "leading":[{"kind":"end_of_line","text":"\n","offset":391,"width":1}],
1122 "trailing":[{"kind":"whitespace","text":" ","offset":394,"width":1}],
1137 "trailing":[{"kind":"whitespace","text":" ","offset":397,"width":1}],
1141 "binary_right_operand":{
1142 "kind":"function_call_expression",
1143 "function_call_receiver":{
1157 "function_call_type_args":{
1158 "kind":"type_arguments",
1159 "type_arguments_left_angle":{
1173 "type_arguments_types":{
1179 "kind":"simple_type_specifier",
1180 "simple_type_specifier":{
1195 "list_separator":{"kind":"missing"}
1199 "type_arguments_right_angle":{
1214 "function_call_left_paren":{
1228 "function_call_argument_list":{"kind":"missing"},
1229 "function_call_right_paren":{
1245 "expression_statement_semicolon":{
1255 "trailing":[{"kind":"end_of_line","text":"\n","offset":409,"width":1}],
1261 "kind":"expression_statement",
1262 "expression_statement_expression":{
1263 "kind":"binary_expression",
1264 "binary_left_operand":{
1266 "literal_expression":{
1269 "kind":"decimal_literal",
1276 "trailing":[{"kind":"whitespace","text":" ","offset":412,"width":1}],
1291 "trailing":[{"kind":"whitespace","text":" ","offset":414,"width":1}],
1295 "binary_right_operand":{
1296 "kind":"function_call_expression",
1297 "function_call_receiver":{
1311 "function_call_type_args":{
1312 "kind":"type_arguments",
1313 "type_arguments_left_angle":{
1327 "type_arguments_types":{
1333 "kind":"simple_type_specifier",
1334 "simple_type_specifier":{
1349 "list_separator":{"kind":"missing"}
1353 "type_arguments_right_angle":{
1368 "function_call_left_paren":{
1382 "function_call_argument_list":{"kind":"missing"},
1383 "function_call_right_paren":{
1399 "expression_statement_semicolon":{
1409 "trailing":[{"kind":"end_of_line","text":"\n","offset":426,"width":1}],
1415 "kind":"expression_statement",
1416 "expression_statement_expression":{
1417 "kind":"binary_expression",
1418 "binary_left_operand":{
1420 "literal_expression":{
1423 "kind":"decimal_literal",
1430 "trailing":[{"kind":"whitespace","text":" ","offset":429,"width":1}],
1445 "trailing":[{"kind":"whitespace","text":" ","offset":431,"width":1}],
1449 "binary_right_operand":{
1450 "kind":"function_call_expression",
1451 "function_call_receiver":{
1465 "function_call_type_args":{
1466 "kind":"type_arguments",
1467 "type_arguments_left_angle":{
1481 "type_arguments_types":{
1487 "kind":"simple_type_specifier",
1488 "simple_type_specifier":{
1503 "list_separator":{"kind":"missing"}
1507 "type_arguments_right_angle":{
1522 "function_call_left_paren":{
1536 "function_call_argument_list":{
1543 "variable_expression":{
1558 "list_separator":{"kind":"missing"}
1562 "function_call_right_paren":{
1578 "expression_statement_semicolon":{
1588 "trailing":[{"kind":"end_of_line","text":"\n","offset":445,"width":1}],
1594 "kind":"expression_statement",
1595 "expression_statement_expression":{
1596 "kind":"binary_expression",
1597 "binary_left_operand":{
1599 "literal_expression":{
1602 "kind":"decimal_literal",
1609 "trailing":[{"kind":"whitespace","text":" ","offset":448,"width":1}],
1624 "trailing":[{"kind":"whitespace","text":" ","offset":450,"width":1}],
1628 "binary_right_operand":{
1629 "kind":"function_call_expression",
1630 "function_call_receiver":{
1644 "function_call_type_args":{
1645 "kind":"type_arguments",
1646 "type_arguments_left_angle":{
1660 "type_arguments_types":{
1666 "kind":"simple_type_specifier",
1667 "simple_type_specifier":{
1682 "list_separator":{"kind":"missing"}
1686 "type_arguments_right_angle":{
1701 "function_call_left_paren":{
1715 "function_call_argument_list":{
1722 "variable_expression":{
1747 "trailing":[{"kind":"whitespace","text":" ","offset":463,"width":1}],
1756 "variable_expression":{
1771 "list_separator":{"kind":"missing"}
1775 "function_call_right_paren":{
1791 "expression_statement_semicolon":{
1801 "trailing":[{"kind":"end_of_line","text":"\n","offset":468,"width":1}],
1807 "kind":"expression_statement",
1808 "expression_statement_expression":{
1809 "kind":"binary_expression",
1810 "binary_left_operand":{
1812 "literal_expression":{
1815 "kind":"decimal_literal",
1822 "trailing":[{"kind":"whitespace","text":" ","offset":471,"width":1}],
1837 "trailing":[{"kind":"whitespace","text":" ","offset":473,"width":1}],
1841 "binary_right_operand":{
1842 "kind":"function_call_expression",
1843 "function_call_receiver":{
1844 "kind":"scope_resolution_expression",
1845 "scope_resolution_qualifier":{
1859 "scope_resolution_operator":{
1873 "scope_resolution_name":{
1888 "function_call_type_args":{
1889 "kind":"type_arguments",
1890 "type_arguments_left_angle":{
1904 "type_arguments_types":{
1910 "kind":"simple_type_specifier",
1911 "simple_type_specifier":{
1926 "list_separator":{"kind":"missing"}
1930 "type_arguments_right_angle":{
1945 "function_call_left_paren":{
1959 "function_call_argument_list":{"kind":"missing"},
1960 "function_call_right_paren":{
1976 "expression_statement_semicolon":{
1986 "trailing":[{"kind":"end_of_line","text":"\n","offset":488,"width":1}],
1992 "kind":"expression_statement",
1993 "expression_statement_expression":{
1994 "kind":"binary_expression",
1995 "binary_left_operand":{
1997 "literal_expression":{
2000 "kind":"decimal_literal",
2007 "trailing":[{"kind":"whitespace","text":" ","offset":491,"width":1}],
2022 "trailing":[{"kind":"whitespace","text":" ","offset":493,"width":1}],
2026 "binary_right_operand":{
2027 "kind":"function_call_expression",
2028 "function_call_receiver":{
2029 "kind":"scope_resolution_expression",
2030 "scope_resolution_qualifier":{
2044 "scope_resolution_operator":{
2058 "scope_resolution_name":{
2073 "function_call_type_args":{
2074 "kind":"type_arguments",
2075 "type_arguments_left_angle":{
2089 "type_arguments_types":{
2095 "kind":"simple_type_specifier",
2096 "simple_type_specifier":{
2111 "list_separator":{"kind":"missing"}
2115 "type_arguments_right_angle":{
2130 "function_call_left_paren":{
2144 "function_call_argument_list":{
2151 "variable_expression":{
2166 "list_separator":{"kind":"missing"}
2170 "function_call_right_paren":{
2186 "expression_statement_semicolon":{
2196 "trailing":[{"kind":"end_of_line","text":"\n","offset":510,"width":1}],
2202 "kind":"expression_statement",
2203 "expression_statement_expression":{
2204 "kind":"binary_expression",
2205 "binary_left_operand":{
2207 "literal_expression":{
2210 "kind":"decimal_literal",
2217 "trailing":[{"kind":"whitespace","text":" ","offset":513,"width":1}],
2232 "trailing":[{"kind":"whitespace","text":" ","offset":515,"width":1}],
2236 "binary_right_operand":{
2237 "kind":"function_call_expression",
2238 "function_call_receiver":{
2239 "kind":"scope_resolution_expression",
2240 "scope_resolution_qualifier":{
2254 "scope_resolution_operator":{
2268 "scope_resolution_name":{
2283 "function_call_type_args":{
2284 "kind":"type_arguments",
2285 "type_arguments_left_angle":{
2299 "type_arguments_types":{
2305 "kind":"simple_type_specifier",
2306 "simple_type_specifier":{
2321 "list_separator":{"kind":"missing"}
2325 "type_arguments_right_angle":{
2340 "function_call_left_paren":{
2354 "function_call_argument_list":{
2361 "variable_expression":{
2386 "trailing":[{"kind":"whitespace","text":" ","offset":531,"width":1}],
2395 "variable_expression":{
2410 "list_separator":{"kind":"missing"}
2414 "function_call_right_paren":{
2430 "expression_statement_semicolon":{
2440 "trailing":[{"kind":"end_of_line","text":"\n","offset":536,"width":1}],
2446 "kind":"expression_statement",
2447 "expression_statement_expression":{
2448 "kind":"function_call_expression",
2449 "function_call_receiver":{
2463 "function_call_type_args":{"kind":"missing"},
2464 "function_call_left_paren":{
2478 "function_call_argument_list":{
2484 "kind":"function_call_expression",
2485 "function_call_receiver":{
2499 "function_call_type_args":{
2500 "kind":"type_arguments",
2501 "type_arguments_left_angle":{
2515 "type_arguments_types":{
2521 "kind":"simple_type_specifier",
2522 "simple_type_specifier":{
2537 "list_separator":{"kind":"missing"}
2541 "type_arguments_right_angle":{
2556 "function_call_left_paren":{
2570 "function_call_argument_list":{"kind":"missing"},
2571 "function_call_right_paren":{
2586 "list_separator":{"kind":"missing"}
2590 "function_call_right_paren":{
2605 "expression_statement_semicolon":{
2615 "trailing":[{"kind":"end_of_line","text":"\n","offset":553,"width":1}],
2621 "kind":"expression_statement",
2622 "expression_statement_expression":{
2623 "kind":"function_call_expression",
2624 "function_call_receiver":{
2638 "function_call_type_args":{"kind":"missing"},
2639 "function_call_left_paren":{
2653 "function_call_argument_list":{
2659 "kind":"function_call_expression",
2660 "function_call_receiver":{
2674 "function_call_type_args":{
2675 "kind":"type_arguments",
2676 "type_arguments_left_angle":{
2690 "type_arguments_types":{
2696 "kind":"simple_type_specifier",
2697 "simple_type_specifier":{
2712 "list_separator":{"kind":"missing"}
2716 "type_arguments_right_angle":{
2731 "function_call_left_paren":{
2745 "function_call_argument_list":{
2752 "variable_expression":{
2767 "list_separator":{"kind":"missing"}
2771 "function_call_right_paren":{
2786 "list_separator":{"kind":"missing"}
2790 "function_call_right_paren":{
2805 "expression_statement_semicolon":{
2815 "trailing":[{"kind":"end_of_line","text":"\n","offset":572,"width":1}],
2821 "kind":"expression_statement",
2822 "expression_statement_expression":{
2823 "kind":"function_call_expression",
2824 "function_call_receiver":{
2838 "function_call_type_args":{"kind":"missing"},
2839 "function_call_left_paren":{
2853 "function_call_argument_list":{
2859 "kind":"function_call_expression",
2860 "function_call_receiver":{
2874 "function_call_type_args":{
2875 "kind":"type_arguments",
2876 "type_arguments_left_angle":{
2890 "type_arguments_types":{
2896 "kind":"simple_type_specifier",
2897 "simple_type_specifier":{
2912 "list_separator":{"kind":"missing"}
2916 "type_arguments_right_angle":{
2931 "function_call_left_paren":{
2945 "function_call_argument_list":{
2952 "variable_expression":{
2977 "trailing":[{"kind":"whitespace","text":" ","offset":589,"width":1}],
2986 "variable_expression":{
3001 "list_separator":{"kind":"missing"}
3005 "function_call_right_paren":{
3020 "list_separator":{"kind":"missing"}
3024 "function_call_right_paren":{
3039 "expression_statement_semicolon":{
3049 "trailing":[{"kind":"end_of_line","text":"\n","offset":595,"width":1}],
3055 "kind":"expression_statement",
3056 "expression_statement_expression":{
3057 "kind":"binary_expression",
3058 "binary_left_operand":{
3086 "binary_right_operand":{
3087 "kind":"function_call_expression",
3088 "function_call_receiver":{
3102 "function_call_type_args":{
3103 "kind":"type_arguments",
3104 "type_arguments_left_angle":{
3118 "type_arguments_types":{
3124 "kind":"simple_type_specifier",
3125 "simple_type_specifier":{
3140 "list_separator":{"kind":"missing"}
3144 "type_arguments_right_angle":{
3159 "function_call_left_paren":{
3173 "function_call_argument_list":{"kind":"missing"},
3174 "function_call_right_paren":{
3190 "expression_statement_semicolon":{
3200 "trailing":[{"kind":"end_of_line","text":"\n","offset":611,"width":1}],
3206 "kind":"expression_statement",
3207 "expression_statement_expression":{
3208 "kind":"binary_expression",
3209 "binary_left_operand":{
3210 "kind":"binary_expression",
3211 "binary_left_operand":{
3213 "literal_expression":{
3216 "kind":"decimal_literal",
3223 "trailing":[{"kind":"whitespace","text":" ","offset":614,"width":1}],
3238 "trailing":[{"kind":"whitespace","text":" ","offset":616,"width":1}],
3242 "binary_right_operand":{
3252 "trailing":[{"kind":"whitespace","text":" ","offset":620,"width":1}],
3267 "trailing":[{"kind":"whitespace","text":" ","offset":622,"width":1}],
3271 "binary_right_operand":{
3273 "literal_expression":{
3276 "kind":"decimal_literal",
3289 "expression_statement_semicolon":{
3299 "trailing":[{"kind":"end_of_line","text":"\n","offset":626,"width":1}],
3305 "kind":"expression_statement",
3306 "expression_statement_expression":{
3307 "kind":"binary_expression",
3308 "binary_left_operand":{
3309 "kind":"binary_expression",
3310 "binary_left_operand":{
3312 "literal_expression":{
3315 "kind":"decimal_literal",
3322 "trailing":[{"kind":"whitespace","text":" ","offset":629,"width":1}],
3337 "trailing":[{"kind":"whitespace","text":" ","offset":631,"width":1}],
3341 "binary_right_operand":{
3351 "trailing":[{"kind":"whitespace","text":" ","offset":635,"width":1}],
3366 "trailing":[{"kind":"whitespace","text":" ","offset":637,"width":1}],
3370 "binary_right_operand":{
3371 "kind":"binary_expression",
3372 "binary_left_operand":{
3374 "literal_expression":{
3377 "kind":"decimal_literal",
3384 "trailing":[{"kind":"whitespace","text":" ","offset":640,"width":1}],
3399 "trailing":[{"kind":"whitespace","text":" ","offset":642,"width":1}],
3403 "binary_right_operand":{
3405 "literal_expression":{
3408 "kind":"decimal_literal",
3422 "expression_statement_semicolon":{
3432 "trailing":[{"kind":"end_of_line","text":"\n","offset":646,"width":1}],
3438 "kind":"expression_statement",
3439 "expression_statement_expression":{
3440 "kind":"binary_expression",
3441 "binary_left_operand":{
3442 "kind":"binary_expression",
3443 "binary_left_operand":{
3444 "kind":"binary_expression",
3445 "binary_left_operand":{
3447 "literal_expression":{
3450 "kind":"decimal_literal",
3457 "trailing":[{"kind":"whitespace","text":" ","offset":649,"width":1}],
3472 "trailing":[{"kind":"whitespace","text":" ","offset":651,"width":1}],
3476 "binary_right_operand":{
3486 "trailing":[{"kind":"whitespace","text":" ","offset":655,"width":1}],
3501 "trailing":[{"kind":"whitespace","text":" ","offset":657,"width":1}],
3505 "binary_right_operand":{
3507 "literal_expression":{
3510 "kind":"decimal_literal",
3517 "trailing":[{"kind":"whitespace","text":" ","offset":660,"width":1}],
3533 "trailing":[{"kind":"whitespace","text":" ","offset":664,"width":1}],
3537 "binary_right_operand":{
3539 "literal_expression":{
3542 "kind":"boolean_literal",
3555 "expression_statement_semicolon":{
3565 "trailing":[{"kind":"end_of_line","text":"\n","offset":670,"width":1}],
3571 "kind":"end_of_file",
3572 "end_of_file_token":{
3575 "kind":"end_of_file",
3590 "program_text":"<?hh // strict\n\n// ficticious functions with size-discernable names\nf('hi'); // normal function call w/o generics\nfo<string>('hello'); // annotated function call\nfoo(0 < 0, tuple()); // not generics annotated, but seems so a little\nfooo(Bar < 0, 10 > Qux); // certainly not annotated, but hard to tell\nfoooo(bar<int,string>()); // annotated inside an argument list\n42 * ba<string>('hello');\n\n$x ?? foo<bar>();\n42 * foo<bar>();\n42 * foo<bar>($x);\n42 * foo<bar>($x, $y);\n42 * x::foo<bar>();\n42 * x::foo<bar>($x);\n42 * x::foo<bar>($x, $y);\nbaz(foo<baz>());\nbaz(foo<baz>($x));\nbaz(foo<baz>($x, $y));\nfoo<bar<baz>();\n42 * foo < 90;\n42 * foo < 90 + 50;\n42 * foo < 90 === true;\n",
3591 "version":"2020-04-14-0002"