Delete provisional syntax for capabilities
[hiphop-php.git] / hphp / hack / test / full_fidelity / cases / test_null_coalesce_assignment.php.json.exp
blobf42b29395c196814fdd46c28f3fcca4b2e789ab7
2 "parse_tree":{
3 "kind":"script",
4 "script_declarations":{
5 "kind":"list",
6 "elements":[
8 "kind":"markup_section",
9 "markup_hashbang":{
10 "kind":"token",
11 "token":{
12 "kind":"hashbang",
13 "text":"",
14 "offset":0,
15 "leading_width":0,
16 "width":0,
17 "trailing_width":0,
18 "leading":[],
19 "trailing":[],
20 "line_number":1
23 "markup_suffix":{
24 "kind":"markup_suffix",
25 "markup_suffix_less_than_question":{
26 "kind":"token",
27 "token":{
28 "kind":"<?",
29 "text":"<?",
30 "offset":0,
31 "leading_width":0,
32 "width":2,
33 "trailing_width":0,
34 "leading":[],
35 "trailing":[],
36 "line_number":1
39 "markup_suffix_name":{
40 "kind":"token",
41 "token":{
42 "kind":"name",
43 "text":"hh",
44 "offset":2,
45 "leading_width":0,
46 "width":2,
47 "trailing_width":11,
48 "leading":[],
49 "trailing":[
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}
54 "line_number":1
60 "kind":"function_declaration",
61 "function_attribute_spec":{"kind":"missing"},
62 "function_declaration_header":{
63 "kind":"function_declaration_header",
64 "function_modifiers":{"kind":"missing"},
65 "function_keyword":{
66 "kind":"token",
67 "token":{
68 "kind":"function",
69 "text":"function",
70 "offset":15,
71 "leading_width":1,
72 "width":8,
73 "trailing_width":1,
74 "leading":[{"kind":"end_of_line","text":"\n","offset":15,"width":1}],
75 "trailing":[{"kind":"whitespace","text":" ","offset":24,"width":1}],
76 "line_number":3
79 "function_name":{
80 "kind":"token",
81 "token":{
82 "kind":"name",
83 "text":"foo",
84 "offset":25,
85 "leading_width":0,
86 "width":3,
87 "trailing_width":0,
88 "leading":[],
89 "trailing":[],
90 "line_number":3
93 "function_type_parameter_list":{"kind":"missing"},
94 "function_left_paren":{
95 "kind":"token",
96 "token":{
97 "kind":"(",
98 "text":"(",
99 "offset":28,
100 "leading_width":0,
101 "width":1,
102 "trailing_width":0,
103 "leading":[],
104 "trailing":[],
105 "line_number":3
108 "function_parameter_list":{
109 "kind":"list",
110 "elements":[
112 "kind":"list_item",
113 "list_item":{
114 "kind":"parameter_declaration",
115 "parameter_attribute":{"kind":"missing"},
116 "parameter_visibility":{"kind":"missing"},
117 "parameter_call_convention":{"kind":"missing"},
118 "parameter_type":{
119 "kind":"simple_type_specifier",
120 "simple_type_specifier":{
121 "kind":"token",
122 "token":{
123 "kind":"int",
124 "text":"int",
125 "offset":29,
126 "leading_width":0,
127 "width":3,
128 "trailing_width":1,
129 "leading":[],
130 "trailing":[{"kind":"whitespace","text":" ","offset":32,"width":1}],
131 "line_number":3
135 "parameter_name":{
136 "kind":"token",
137 "token":{
138 "kind":"variable",
139 "text":"$y",
140 "offset":33,
141 "leading_width":0,
142 "width":2,
143 "trailing_width":0,
144 "leading":[],
145 "trailing":[],
146 "line_number":3
149 "parameter_default_value":{"kind":"missing"}
151 "list_separator":{"kind":"missing"}
155 "function_right_paren":{
156 "kind":"token",
157 "token":{
158 "kind":")",
159 "text":")",
160 "offset":35,
161 "leading_width":0,
162 "width":1,
163 "trailing_width":0,
164 "leading":[],
165 "trailing":[],
166 "line_number":3
169 "function_capability":{"kind":"missing"},
170 "function_colon":{
171 "kind":"token",
172 "token":{
173 "kind":":",
174 "text":":",
175 "offset":36,
176 "leading_width":0,
177 "width":1,
178 "trailing_width":1,
179 "leading":[],
180 "trailing":[{"kind":"whitespace","text":" ","offset":37,"width":1}],
181 "line_number":3
184 "function_type":{
185 "kind":"simple_type_specifier",
186 "simple_type_specifier":{
187 "kind":"token",
188 "token":{
189 "kind":"int",
190 "text":"int",
191 "offset":38,
192 "leading_width":0,
193 "width":3,
194 "trailing_width":1,
195 "leading":[],
196 "trailing":[{"kind":"whitespace","text":" ","offset":41,"width":1}],
197 "line_number":3
201 "function_where_clause":{"kind":"missing"}
203 "function_body":{
204 "kind":"compound_statement",
205 "compound_left_brace":{
206 "kind":"token",
207 "token":{
208 "kind":"{",
209 "text":"{",
210 "offset":42,
211 "leading_width":0,
212 "width":1,
213 "trailing_width":1,
214 "leading":[],
215 "trailing":[{"kind":"end_of_line","text":"\n","offset":43,"width":1}],
216 "line_number":3
219 "compound_statements":{
220 "kind":"list",
221 "elements":[
223 "kind":"return_statement",
224 "return_keyword":{
225 "kind":"token",
226 "token":{
227 "kind":"return",
228 "text":"return",
229 "offset":44,
230 "leading_width":2,
231 "width":6,
232 "trailing_width":1,
233 "leading":[{"kind":"whitespace","text":" ","offset":44,"width":2}],
234 "trailing":[{"kind":"whitespace","text":" ","offset":52,"width":1}],
235 "line_number":4
238 "return_expression":{
239 "kind":"variable",
240 "variable_expression":{
241 "kind":"token",
242 "token":{
243 "kind":"variable",
244 "text":"$y",
245 "offset":53,
246 "leading_width":0,
247 "width":2,
248 "trailing_width":0,
249 "leading":[],
250 "trailing":[],
251 "line_number":4
255 "return_semicolon":{
256 "kind":"token",
257 "token":{
258 "kind":";",
259 "text":";",
260 "offset":55,
261 "leading_width":0,
262 "width":1,
263 "trailing_width":1,
264 "leading":[],
265 "trailing":[{"kind":"end_of_line","text":"\n","offset":56,"width":1}],
266 "line_number":4
272 "compound_right_brace":{
273 "kind":"token",
274 "token":{
275 "kind":"}",
276 "text":"}",
277 "offset":57,
278 "leading_width":0,
279 "width":1,
280 "trailing_width":1,
281 "leading":[],
282 "trailing":[{"kind":"end_of_line","text":"\n","offset":58,"width":1}],
283 "line_number":5
289 "kind":"function_declaration",
290 "function_attribute_spec":{"kind":"missing"},
291 "function_declaration_header":{
292 "kind":"function_declaration_header",
293 "function_modifiers":{"kind":"missing"},
294 "function_keyword":{
295 "kind":"token",
296 "token":{
297 "kind":"function",
298 "text":"function",
299 "offset":59,
300 "leading_width":1,
301 "width":8,
302 "trailing_width":1,
303 "leading":[{"kind":"end_of_line","text":"\n","offset":59,"width":1}],
304 "trailing":[{"kind":"whitespace","text":" ","offset":68,"width":1}],
305 "line_number":7
308 "function_name":{
309 "kind":"token",
310 "token":{
311 "kind":"name",
312 "text":"f",
313 "offset":69,
314 "leading_width":0,
315 "width":1,
316 "trailing_width":0,
317 "leading":[],
318 "trailing":[],
319 "line_number":7
322 "function_type_parameter_list":{"kind":"missing"},
323 "function_left_paren":{
324 "kind":"token",
325 "token":{
326 "kind":"(",
327 "text":"(",
328 "offset":70,
329 "leading_width":0,
330 "width":1,
331 "trailing_width":0,
332 "leading":[],
333 "trailing":[],
334 "line_number":7
337 "function_parameter_list":{
338 "kind":"list",
339 "elements":[
341 "kind":"list_item",
342 "list_item":{
343 "kind":"parameter_declaration",
344 "parameter_attribute":{"kind":"missing"},
345 "parameter_visibility":{"kind":"missing"},
346 "parameter_call_convention":{"kind":"missing"},
347 "parameter_type":{
348 "kind":"nullable_type_specifier",
349 "nullable_question":{
350 "kind":"token",
351 "token":{
352 "kind":"?",
353 "text":"?",
354 "offset":71,
355 "leading_width":0,
356 "width":1,
357 "trailing_width":0,
358 "leading":[],
359 "trailing":[],
360 "line_number":7
363 "nullable_type":{
364 "kind":"simple_type_specifier",
365 "simple_type_specifier":{
366 "kind":"token",
367 "token":{
368 "kind":"int",
369 "text":"int",
370 "offset":72,
371 "leading_width":0,
372 "width":3,
373 "trailing_width":1,
374 "leading":[],
375 "trailing":[{"kind":"whitespace","text":" ","offset":75,"width":1}],
376 "line_number":7
381 "parameter_name":{
382 "kind":"token",
383 "token":{
384 "kind":"variable",
385 "text":"$x",
386 "offset":76,
387 "leading_width":0,
388 "width":2,
389 "trailing_width":0,
390 "leading":[],
391 "trailing":[],
392 "line_number":7
395 "parameter_default_value":{"kind":"missing"}
397 "list_separator":{"kind":"missing"}
401 "function_right_paren":{
402 "kind":"token",
403 "token":{
404 "kind":")",
405 "text":")",
406 "offset":78,
407 "leading_width":0,
408 "width":1,
409 "trailing_width":0,
410 "leading":[],
411 "trailing":[],
412 "line_number":7
415 "function_capability":{"kind":"missing"},
416 "function_colon":{
417 "kind":"token",
418 "token":{
419 "kind":":",
420 "text":":",
421 "offset":79,
422 "leading_width":0,
423 "width":1,
424 "trailing_width":1,
425 "leading":[],
426 "trailing":[{"kind":"whitespace","text":" ","offset":80,"width":1}],
427 "line_number":7
430 "function_type":{
431 "kind":"simple_type_specifier",
432 "simple_type_specifier":{
433 "kind":"token",
434 "token":{
435 "kind":"int",
436 "text":"int",
437 "offset":81,
438 "leading_width":0,
439 "width":3,
440 "trailing_width":1,
441 "leading":[],
442 "trailing":[{"kind":"whitespace","text":" ","offset":84,"width":1}],
443 "line_number":7
447 "function_where_clause":{"kind":"missing"}
449 "function_body":{
450 "kind":"compound_statement",
451 "compound_left_brace":{
452 "kind":"token",
453 "token":{
454 "kind":"{",
455 "text":"{",
456 "offset":85,
457 "leading_width":0,
458 "width":1,
459 "trailing_width":1,
460 "leading":[],
461 "trailing":[{"kind":"end_of_line","text":"\n","offset":86,"width":1}],
462 "line_number":7
465 "compound_statements":{
466 "kind":"list",
467 "elements":[
469 "kind":"expression_statement",
470 "expression_statement_expression":{
471 "kind":"binary_expression",
472 "binary_left_operand":{
473 "kind":"variable",
474 "variable_expression":{
475 "kind":"token",
476 "token":{
477 "kind":"variable",
478 "text":"$x",
479 "offset":87,
480 "leading_width":2,
481 "width":2,
482 "trailing_width":1,
483 "leading":[{"kind":"whitespace","text":" ","offset":87,"width":2}],
484 "trailing":[{"kind":"whitespace","text":" ","offset":91,"width":1}],
485 "line_number":8
489 "binary_operator":{
490 "kind":"token",
491 "token":{
492 "kind":"??=",
493 "text":"??=",
494 "offset":92,
495 "leading_width":0,
496 "width":3,
497 "trailing_width":1,
498 "leading":[],
499 "trailing":[{"kind":"whitespace","text":" ","offset":95,"width":1}],
500 "line_number":8
503 "binary_right_operand":{
504 "kind":"literal",
505 "literal_expression":{
506 "kind":"token",
507 "token":{
508 "kind":"decimal_literal",
509 "text":"0",
510 "offset":96,
511 "leading_width":0,
512 "width":1,
513 "trailing_width":0,
514 "leading":[],
515 "trailing":[],
516 "line_number":8
521 "expression_statement_semicolon":{
522 "kind":"token",
523 "token":{
524 "kind":";",
525 "text":";",
526 "offset":97,
527 "leading_width":0,
528 "width":1,
529 "trailing_width":1,
530 "leading":[],
531 "trailing":[{"kind":"end_of_line","text":"\n","offset":98,"width":1}],
532 "line_number":8
537 "kind":"expression_statement",
538 "expression_statement_expression":{
539 "kind":"binary_expression",
540 "binary_left_operand":{
541 "kind":"variable",
542 "variable_expression":{
543 "kind":"token",
544 "token":{
545 "kind":"variable",
546 "text":"$y",
547 "offset":99,
548 "leading_width":2,
549 "width":2,
550 "trailing_width":1,
551 "leading":[{"kind":"whitespace","text":" ","offset":99,"width":2}],
552 "trailing":[{"kind":"whitespace","text":" ","offset":103,"width":1}],
553 "line_number":9
557 "binary_operator":{
558 "kind":"token",
559 "token":{
560 "kind":"=",
561 "text":"=",
562 "offset":104,
563 "leading_width":0,
564 "width":1,
565 "trailing_width":1,
566 "leading":[],
567 "trailing":[{"kind":"whitespace","text":" ","offset":105,"width":1}],
568 "line_number":9
571 "binary_right_operand":{
572 "kind":"literal",
573 "literal_expression":{
574 "kind":"token",
575 "token":{
576 "kind":"decimal_literal",
577 "text":"3",
578 "offset":106,
579 "leading_width":0,
580 "width":1,
581 "trailing_width":0,
582 "leading":[],
583 "trailing":[],
584 "line_number":9
589 "expression_statement_semicolon":{
590 "kind":"token",
591 "token":{
592 "kind":";",
593 "text":";",
594 "offset":107,
595 "leading_width":0,
596 "width":1,
597 "trailing_width":1,
598 "leading":[],
599 "trailing":[{"kind":"end_of_line","text":"\n","offset":108,"width":1}],
600 "line_number":9
605 "kind":"return_statement",
606 "return_keyword":{
607 "kind":"token",
608 "token":{
609 "kind":"return",
610 "text":"return",
611 "offset":109,
612 "leading_width":2,
613 "width":6,
614 "trailing_width":1,
615 "leading":[{"kind":"whitespace","text":" ","offset":109,"width":2}],
616 "trailing":[{"kind":"whitespace","text":" ","offset":117,"width":1}],
617 "line_number":10
620 "return_expression":{
621 "kind":"binary_expression",
622 "binary_left_operand":{
623 "kind":"variable",
624 "variable_expression":{
625 "kind":"token",
626 "token":{
627 "kind":"variable",
628 "text":"$x",
629 "offset":118,
630 "leading_width":0,
631 "width":2,
632 "trailing_width":1,
633 "leading":[],
634 "trailing":[{"kind":"whitespace","text":" ","offset":120,"width":1}],
635 "line_number":10
639 "binary_operator":{
640 "kind":"token",
641 "token":{
642 "kind":"??=",
643 "text":"??=",
644 "offset":121,
645 "leading_width":0,
646 "width":3,
647 "trailing_width":1,
648 "leading":[],
649 "trailing":[{"kind":"whitespace","text":" ","offset":124,"width":1}],
650 "line_number":10
653 "binary_right_operand":{
654 "kind":"binary_expression",
655 "binary_left_operand":{
656 "kind":"variable",
657 "variable_expression":{
658 "kind":"token",
659 "token":{
660 "kind":"variable",
661 "text":"$y",
662 "offset":125,
663 "leading_width":0,
664 "width":2,
665 "trailing_width":1,
666 "leading":[],
667 "trailing":[{"kind":"whitespace","text":" ","offset":127,"width":1}],
668 "line_number":10
672 "binary_operator":{
673 "kind":"token",
674 "token":{
675 "kind":"|>",
676 "text":"|>",
677 "offset":128,
678 "leading_width":0,
679 "width":2,
680 "trailing_width":1,
681 "leading":[],
682 "trailing":[{"kind":"whitespace","text":" ","offset":130,"width":1}],
683 "line_number":10
686 "binary_right_operand":{
687 "kind":"function_call_expression",
688 "function_call_receiver":{
689 "kind":"token",
690 "token":{
691 "kind":"name",
692 "text":"foo",
693 "offset":131,
694 "leading_width":0,
695 "width":3,
696 "trailing_width":0,
697 "leading":[],
698 "trailing":[],
699 "line_number":10
702 "function_call_type_args":{"kind":"missing"},
703 "function_call_left_paren":{
704 "kind":"token",
705 "token":{
706 "kind":"(",
707 "text":"(",
708 "offset":134,
709 "leading_width":0,
710 "width":1,
711 "trailing_width":0,
712 "leading":[],
713 "trailing":[],
714 "line_number":10
717 "function_call_argument_list":{"kind":"missing"},
718 "function_call_right_paren":{
719 "kind":"token",
720 "token":{
721 "kind":")",
722 "text":")",
723 "offset":135,
724 "leading_width":0,
725 "width":1,
726 "trailing_width":0,
727 "leading":[],
728 "trailing":[],
729 "line_number":10
735 "return_semicolon":{
736 "kind":"token",
737 "token":{
738 "kind":";",
739 "text":";",
740 "offset":136,
741 "leading_width":0,
742 "width":1,
743 "trailing_width":1,
744 "leading":[],
745 "trailing":[{"kind":"end_of_line","text":"\n","offset":137,"width":1}],
746 "line_number":10
752 "compound_right_brace":{
753 "kind":"token",
754 "token":{
755 "kind":"}",
756 "text":"}",
757 "offset":138,
758 "leading_width":0,
759 "width":1,
760 "trailing_width":1,
761 "leading":[],
762 "trailing":[{"kind":"end_of_line","text":"\n","offset":139,"width":1}],
763 "line_number":11
769 "kind":"end_of_file",
770 "end_of_file_token":{
771 "kind":"token",
772 "token":{
773 "kind":"end_of_file",
774 "text":"",
775 "offset":140,
776 "leading_width":0,
777 "width":0,
778 "trailing_width":0,
779 "leading":[],
780 "trailing":[],
781 "line_number":12
788 "program_text":"<?hh // strict\n\nfunction foo(int $y): int {\n return $y;\n}\n\nfunction f(?int $x): int {\n $x ??= 0;\n $y = 3;\n return $x ??= $y |> foo();\n}\n",
789 "version":"2020-12-09-0001"