1Types by version
2-----
3<?php
4function test(
5    bool $a1, int $a2, float $a3, string $a4, // PHP 7.0
6    iterable $a5, // PHP 7.1
7    object $a6, // PHP 7.2
8    mixed $a7, // PHP 8.0
9    null $a8, // PHP 8.0
10    false $a9, // PHP 8.0
11): void {} // PHP 7.1
12function test2(): never {} // PHP 8.1
13-----
14!!version=5.6
15array(
16    0: Stmt_Function(
17        attrGroups: array(
18        )
19        byRef: false
20        name: Identifier(
21            name: test
22        )
23        params: array(
24            0: Param(
25                attrGroups: array(
26                )
27                flags: 0
28                type: Name(
29                    name: bool
30                )
31                byRef: false
32                variadic: false
33                var: Expr_Variable(
34                    name: a1
35                )
36                default: null
37                hooks: array(
38                )
39            )
40            1: Param(
41                attrGroups: array(
42                )
43                flags: 0
44                type: Name(
45                    name: int
46                )
47                byRef: false
48                variadic: false
49                var: Expr_Variable(
50                    name: a2
51                )
52                default: null
53                hooks: array(
54                )
55            )
56            2: Param(
57                attrGroups: array(
58                )
59                flags: 0
60                type: Name(
61                    name: float
62                )
63                byRef: false
64                variadic: false
65                var: Expr_Variable(
66                    name: a3
67                )
68                default: null
69                hooks: array(
70                )
71            )
72            3: Param(
73                attrGroups: array(
74                )
75                flags: 0
76                type: Name(
77                    name: string
78                )
79                byRef: false
80                variadic: false
81                var: Expr_Variable(
82                    name: a4
83                )
84                default: null
85                hooks: array(
86                )
87            )
88            4: Param(
89                attrGroups: array(
90                )
91                flags: 0
92                type: Name(
93                    name: iterable
94                )
95                byRef: false
96                variadic: false
97                var: Expr_Variable(
98                    name: a5
99                )
100                default: null
101                hooks: array(
102                )
103                comments: array(
104                    0: // PHP 7.0
105                )
106            )
107            5: Param(
108                attrGroups: array(
109                )
110                flags: 0
111                type: Name(
112                    name: object
113                )
114                byRef: false
115                variadic: false
116                var: Expr_Variable(
117                    name: a6
118                )
119                default: null
120                hooks: array(
121                )
122                comments: array(
123                    0: // PHP 7.1
124                )
125            )
126            6: Param(
127                attrGroups: array(
128                )
129                flags: 0
130                type: Name(
131                    name: mixed
132                )
133                byRef: false
134                variadic: false
135                var: Expr_Variable(
136                    name: a7
137                )
138                default: null
139                hooks: array(
140                )
141                comments: array(
142                    0: // PHP 7.2
143                )
144            )
145            7: Param(
146                attrGroups: array(
147                )
148                flags: 0
149                type: Name(
150                    name: null
151                )
152                byRef: false
153                variadic: false
154                var: Expr_Variable(
155                    name: a8
156                )
157                default: null
158                hooks: array(
159                )
160                comments: array(
161                    0: // PHP 8.0
162                )
163            )
164            8: Param(
165                attrGroups: array(
166                )
167                flags: 0
168                type: Name(
169                    name: false
170                )
171                byRef: false
172                variadic: false
173                var: Expr_Variable(
174                    name: a9
175                )
176                default: null
177                hooks: array(
178                )
179                comments: array(
180                    0: // PHP 8.0
181                )
182            )
183        )
184        returnType: Name(
185            name: void
186        )
187        stmts: array(
188        )
189    )
190    1: Stmt_Function(
191        attrGroups: array(
192        )
193        byRef: false
194        name: Identifier(
195            name: test2
196        )
197        params: array(
198        )
199        returnType: Name(
200            name: never
201        )
202        stmts: array(
203        )
204        comments: array(
205            0: // PHP 7.1
206        )
207    )
208    2: Stmt_Nop(
209        comments: array(
210            0: // PHP 8.1
211        )
212    )
213)
214-----
215<?php
216function test(
217    bool $a1, int $a2, float $a3, string $a4, // PHP 7.0
218    iterable $a5, // PHP 7.1
219    object $a6, // PHP 7.2
220    mixed $a7, // PHP 8.0
221    null $a8, // PHP 8.0
222    false $a9, // PHP 8.0
223): void {} // PHP 7.1
224function test2(): never {} // PHP 8.1
225-----
226!!version=7.0
227array(
228    0: Stmt_Function(
229        attrGroups: array(
230        )
231        byRef: false
232        name: Identifier(
233            name: test
234        )
235        params: array(
236            0: Param(
237                attrGroups: array(
238                )
239                flags: 0
240                type: Identifier(
241                    name: bool
242                )
243                byRef: false
244                variadic: false
245                var: Expr_Variable(
246                    name: a1
247                )
248                default: null
249                hooks: array(
250                )
251            )
252            1: Param(
253                attrGroups: array(
254                )
255                flags: 0
256                type: Identifier(
257                    name: int
258                )
259                byRef: false
260                variadic: false
261                var: Expr_Variable(
262                    name: a2
263                )
264                default: null
265                hooks: array(
266                )
267            )
268            2: Param(
269                attrGroups: array(
270                )
271                flags: 0
272                type: Identifier(
273                    name: float
274                )
275                byRef: false
276                variadic: false
277                var: Expr_Variable(
278                    name: a3
279                )
280                default: null
281                hooks: array(
282                )
283            )
284            3: Param(
285                attrGroups: array(
286                )
287                flags: 0
288                type: Identifier(
289                    name: string
290                )
291                byRef: false
292                variadic: false
293                var: Expr_Variable(
294                    name: a4
295                )
296                default: null
297                hooks: array(
298                )
299            )
300            4: Param(
301                attrGroups: array(
302                )
303                flags: 0
304                type: Name(
305                    name: iterable
306                )
307                byRef: false
308                variadic: false
309                var: Expr_Variable(
310                    name: a5
311                )
312                default: null
313                hooks: array(
314                )
315                comments: array(
316                    0: // PHP 7.0
317                )
318            )
319            5: Param(
320                attrGroups: array(
321                )
322                flags: 0
323                type: Name(
324                    name: object
325                )
326                byRef: false
327                variadic: false
328                var: Expr_Variable(
329                    name: a6
330                )
331                default: null
332                hooks: array(
333                )
334                comments: array(
335                    0: // PHP 7.1
336                )
337            )
338            6: Param(
339                attrGroups: array(
340                )
341                flags: 0
342                type: Name(
343                    name: mixed
344                )
345                byRef: false
346                variadic: false
347                var: Expr_Variable(
348                    name: a7
349                )
350                default: null
351                hooks: array(
352                )
353                comments: array(
354                    0: // PHP 7.2
355                )
356            )
357            7: Param(
358                attrGroups: array(
359                )
360                flags: 0
361                type: Name(
362                    name: null
363                )
364                byRef: false
365                variadic: false
366                var: Expr_Variable(
367                    name: a8
368                )
369                default: null
370                hooks: array(
371                )
372                comments: array(
373                    0: // PHP 8.0
374                )
375            )
376            8: Param(
377                attrGroups: array(
378                )
379                flags: 0
380                type: Name(
381                    name: false
382                )
383                byRef: false
384                variadic: false
385                var: Expr_Variable(
386                    name: a9
387                )
388                default: null
389                hooks: array(
390                )
391                comments: array(
392                    0: // PHP 8.0
393                )
394            )
395        )
396        returnType: Name(
397            name: void
398        )
399        stmts: array(
400        )
401    )
402    1: Stmt_Function(
403        attrGroups: array(
404        )
405        byRef: false
406        name: Identifier(
407            name: test2
408        )
409        params: array(
410        )
411        returnType: Name(
412            name: never
413        )
414        stmts: array(
415        )
416        comments: array(
417            0: // PHP 7.1
418        )
419    )
420    2: Stmt_Nop(
421        comments: array(
422            0: // PHP 8.1
423        )
424    )
425)
426-----
427<?php
428function test(
429    bool $a1, int $a2, float $a3, string $a4, // PHP 7.0
430    iterable $a5, // PHP 7.1
431    object $a6, // PHP 7.2
432    mixed $a7, // PHP 8.0
433    null $a8, // PHP 8.0
434    false $a9, // PHP 8.0
435): void {} // PHP 7.1
436function test2(): never {} // PHP 8.1
437-----
438!!version=7.1
439array(
440    0: Stmt_Function(
441        attrGroups: array(
442        )
443        byRef: false
444        name: Identifier(
445            name: test
446        )
447        params: array(
448            0: Param(
449                attrGroups: array(
450                )
451                flags: 0
452                type: Identifier(
453                    name: bool
454                )
455                byRef: false
456                variadic: false
457                var: Expr_Variable(
458                    name: a1
459                )
460                default: null
461                hooks: array(
462                )
463            )
464            1: Param(
465                attrGroups: array(
466                )
467                flags: 0
468                type: Identifier(
469                    name: int
470                )
471                byRef: false
472                variadic: false
473                var: Expr_Variable(
474                    name: a2
475                )
476                default: null
477                hooks: array(
478                )
479            )
480            2: Param(
481                attrGroups: array(
482                )
483                flags: 0
484                type: Identifier(
485                    name: float
486                )
487                byRef: false
488                variadic: false
489                var: Expr_Variable(
490                    name: a3
491                )
492                default: null
493                hooks: array(
494                )
495            )
496            3: Param(
497                attrGroups: array(
498                )
499                flags: 0
500                type: Identifier(
501                    name: string
502                )
503                byRef: false
504                variadic: false
505                var: Expr_Variable(
506                    name: a4
507                )
508                default: null
509                hooks: array(
510                )
511            )
512            4: Param(
513                attrGroups: array(
514                )
515                flags: 0
516                type: Identifier(
517                    name: iterable
518                )
519                byRef: false
520                variadic: false
521                var: Expr_Variable(
522                    name: a5
523                )
524                default: null
525                hooks: array(
526                )
527                comments: array(
528                    0: // PHP 7.0
529                )
530            )
531            5: Param(
532                attrGroups: array(
533                )
534                flags: 0
535                type: Name(
536                    name: object
537                )
538                byRef: false
539                variadic: false
540                var: Expr_Variable(
541                    name: a6
542                )
543                default: null
544                hooks: array(
545                )
546                comments: array(
547                    0: // PHP 7.1
548                )
549            )
550            6: Param(
551                attrGroups: array(
552                )
553                flags: 0
554                type: Name(
555                    name: mixed
556                )
557                byRef: false
558                variadic: false
559                var: Expr_Variable(
560                    name: a7
561                )
562                default: null
563                hooks: array(
564                )
565                comments: array(
566                    0: // PHP 7.2
567                )
568            )
569            7: Param(
570                attrGroups: array(
571                )
572                flags: 0
573                type: Name(
574                    name: null
575                )
576                byRef: false
577                variadic: false
578                var: Expr_Variable(
579                    name: a8
580                )
581                default: null
582                hooks: array(
583                )
584                comments: array(
585                    0: // PHP 8.0
586                )
587            )
588            8: Param(
589                attrGroups: array(
590                )
591                flags: 0
592                type: Name(
593                    name: false
594                )
595                byRef: false
596                variadic: false
597                var: Expr_Variable(
598                    name: a9
599                )
600                default: null
601                hooks: array(
602                )
603                comments: array(
604                    0: // PHP 8.0
605                )
606            )
607        )
608        returnType: Identifier(
609            name: void
610        )
611        stmts: array(
612        )
613    )
614    1: Stmt_Function(
615        attrGroups: array(
616        )
617        byRef: false
618        name: Identifier(
619            name: test2
620        )
621        params: array(
622        )
623        returnType: Name(
624            name: never
625        )
626        stmts: array(
627        )
628        comments: array(
629            0: // PHP 7.1
630        )
631    )
632    2: Stmt_Nop(
633        comments: array(
634            0: // PHP 8.1
635        )
636    )
637)
638-----
639<?php
640function test(
641    bool $a1, int $a2, float $a3, string $a4, // PHP 7.0
642    iterable $a5, // PHP 7.1
643    object $a6, // PHP 7.2
644    mixed $a7, // PHP 8.0
645    null $a8, // PHP 8.0
646    false $a9, // PHP 8.0
647): void {} // PHP 7.1
648function test2(): never {} // PHP 8.1
649-----
650!!version=7.2
651array(
652    0: Stmt_Function(
653        attrGroups: array(
654        )
655        byRef: false
656        name: Identifier(
657            name: test
658        )
659        params: array(
660            0: Param(
661                attrGroups: array(
662                )
663                flags: 0
664                type: Identifier(
665                    name: bool
666                )
667                byRef: false
668                variadic: false
669                var: Expr_Variable(
670                    name: a1
671                )
672                default: null
673                hooks: array(
674                )
675            )
676            1: Param(
677                attrGroups: array(
678                )
679                flags: 0
680                type: Identifier(
681                    name: int
682                )
683                byRef: false
684                variadic: false
685                var: Expr_Variable(
686                    name: a2
687                )
688                default: null
689                hooks: array(
690                )
691            )
692            2: Param(
693                attrGroups: array(
694                )
695                flags: 0
696                type: Identifier(
697                    name: float
698                )
699                byRef: false
700                variadic: false
701                var: Expr_Variable(
702                    name: a3
703                )
704                default: null
705                hooks: array(
706                )
707            )
708            3: Param(
709                attrGroups: array(
710                )
711                flags: 0
712                type: Identifier(
713                    name: string
714                )
715                byRef: false
716                variadic: false
717                var: Expr_Variable(
718                    name: a4
719                )
720                default: null
721                hooks: array(
722                )
723            )
724            4: Param(
725                attrGroups: array(
726                )
727                flags: 0
728                type: Identifier(
729                    name: iterable
730                )
731                byRef: false
732                variadic: false
733                var: Expr_Variable(
734                    name: a5
735                )
736                default: null
737                hooks: array(
738                )
739                comments: array(
740                    0: // PHP 7.0
741                )
742            )
743            5: Param(
744                attrGroups: array(
745                )
746                flags: 0
747                type: Identifier(
748                    name: object
749                )
750                byRef: false
751                variadic: false
752                var: Expr_Variable(
753                    name: a6
754                )
755                default: null
756                hooks: array(
757                )
758                comments: array(
759                    0: // PHP 7.1
760                )
761            )
762            6: Param(
763                attrGroups: array(
764                )
765                flags: 0
766                type: Name(
767                    name: mixed
768                )
769                byRef: false
770                variadic: false
771                var: Expr_Variable(
772                    name: a7
773                )
774                default: null
775                hooks: array(
776                )
777                comments: array(
778                    0: // PHP 7.2
779                )
780            )
781            7: Param(
782                attrGroups: array(
783                )
784                flags: 0
785                type: Name(
786                    name: null
787                )
788                byRef: false
789                variadic: false
790                var: Expr_Variable(
791                    name: a8
792                )
793                default: null
794                hooks: array(
795                )
796                comments: array(
797                    0: // PHP 8.0
798                )
799            )
800            8: Param(
801                attrGroups: array(
802                )
803                flags: 0
804                type: Name(
805                    name: false
806                )
807                byRef: false
808                variadic: false
809                var: Expr_Variable(
810                    name: a9
811                )
812                default: null
813                hooks: array(
814                )
815                comments: array(
816                    0: // PHP 8.0
817                )
818            )
819        )
820        returnType: Identifier(
821            name: void
822        )
823        stmts: array(
824        )
825    )
826    1: Stmt_Function(
827        attrGroups: array(
828        )
829        byRef: false
830        name: Identifier(
831            name: test2
832        )
833        params: array(
834        )
835        returnType: Name(
836            name: never
837        )
838        stmts: array(
839        )
840        comments: array(
841            0: // PHP 7.1
842        )
843    )
844    2: Stmt_Nop(
845        comments: array(
846            0: // PHP 8.1
847        )
848    )
849)
850-----
851<?php
852function test(
853    bool $a1, int $a2, float $a3, string $a4, // PHP 7.0
854    iterable $a5, // PHP 7.1
855    object $a6, // PHP 7.2
856    mixed $a7, // PHP 8.0
857    null $a8, // PHP 8.0
858    false $a9, // PHP 8.0
859): void {} // PHP 7.1
860function test2(): never {} // PHP 8.1
861-----
862!!version=8.0
863array(
864    0: Stmt_Function(
865        attrGroups: array(
866        )
867        byRef: false
868        name: Identifier(
869            name: test
870        )
871        params: array(
872            0: Param(
873                attrGroups: array(
874                )
875                flags: 0
876                type: Identifier(
877                    name: bool
878                )
879                byRef: false
880                variadic: false
881                var: Expr_Variable(
882                    name: a1
883                )
884                default: null
885                hooks: array(
886                )
887            )
888            1: Param(
889                attrGroups: array(
890                )
891                flags: 0
892                type: Identifier(
893                    name: int
894                )
895                byRef: false
896                variadic: false
897                var: Expr_Variable(
898                    name: a2
899                )
900                default: null
901                hooks: array(
902                )
903            )
904            2: Param(
905                attrGroups: array(
906                )
907                flags: 0
908                type: Identifier(
909                    name: float
910                )
911                byRef: false
912                variadic: false
913                var: Expr_Variable(
914                    name: a3
915                )
916                default: null
917                hooks: array(
918                )
919            )
920            3: Param(
921                attrGroups: array(
922                )
923                flags: 0
924                type: Identifier(
925                    name: string
926                )
927                byRef: false
928                variadic: false
929                var: Expr_Variable(
930                    name: a4
931                )
932                default: null
933                hooks: array(
934                )
935            )
936            4: Param(
937                attrGroups: array(
938                )
939                flags: 0
940                type: Identifier(
941                    name: iterable
942                )
943                byRef: false
944                variadic: false
945                var: Expr_Variable(
946                    name: a5
947                )
948                default: null
949                hooks: array(
950                )
951                comments: array(
952                    0: // PHP 7.0
953                )
954            )
955            5: Param(
956                attrGroups: array(
957                )
958                flags: 0
959                type: Identifier(
960                    name: object
961                )
962                byRef: false
963                variadic: false
964                var: Expr_Variable(
965                    name: a6
966                )
967                default: null
968                hooks: array(
969                )
970                comments: array(
971                    0: // PHP 7.1
972                )
973            )
974            6: Param(
975                attrGroups: array(
976                )
977                flags: 0
978                type: Identifier(
979                    name: mixed
980                )
981                byRef: false
982                variadic: false
983                var: Expr_Variable(
984                    name: a7
985                )
986                default: null
987                hooks: array(
988                )
989                comments: array(
990                    0: // PHP 7.2
991                )
992            )
993            7: Param(
994                attrGroups: array(
995                )
996                flags: 0
997                type: Identifier(
998                    name: null
999                )
1000                byRef: false
1001                variadic: false
1002                var: Expr_Variable(
1003                    name: a8
1004                )
1005                default: null
1006                hooks: array(
1007                )
1008                comments: array(
1009                    0: // PHP 8.0
1010                )
1011            )
1012            8: Param(
1013                attrGroups: array(
1014                )
1015                flags: 0
1016                type: Identifier(
1017                    name: false
1018                )
1019                byRef: false
1020                variadic: false
1021                var: Expr_Variable(
1022                    name: a9
1023                )
1024                default: null
1025                hooks: array(
1026                )
1027                comments: array(
1028                    0: // PHP 8.0
1029                )
1030            )
1031        )
1032        returnType: Identifier(
1033            name: void
1034        )
1035        stmts: array(
1036        )
1037    )
1038    1: Stmt_Function(
1039        attrGroups: array(
1040        )
1041        byRef: false
1042        name: Identifier(
1043            name: test2
1044        )
1045        params: array(
1046        )
1047        returnType: Name(
1048            name: never
1049        )
1050        stmts: array(
1051        )
1052        comments: array(
1053            0: // PHP 7.1
1054        )
1055    )
1056    2: Stmt_Nop(
1057        comments: array(
1058            0: // PHP 8.1
1059        )
1060    )
1061)
1062-----
1063<?php
1064function test(
1065    bool $a1, int $a2, float $a3, string $a4, // PHP 7.0
1066    iterable $a5, // PHP 7.1
1067    object $a6, // PHP 7.2
1068    mixed $a7, // PHP 8.0
1069    null $a8, // PHP 8.0
1070    false $a9, // PHP 8.0
1071): void {} // PHP 7.1
1072function test2(): never {} // PHP 8.1
1073-----
1074!!version=8.1
1075array(
1076    0: Stmt_Function(
1077        attrGroups: array(
1078        )
1079        byRef: false
1080        name: Identifier(
1081            name: test
1082        )
1083        params: array(
1084            0: Param(
1085                attrGroups: array(
1086                )
1087                flags: 0
1088                type: Identifier(
1089                    name: bool
1090                )
1091                byRef: false
1092                variadic: false
1093                var: Expr_Variable(
1094                    name: a1
1095                )
1096                default: null
1097                hooks: array(
1098                )
1099            )
1100            1: Param(
1101                attrGroups: array(
1102                )
1103                flags: 0
1104                type: Identifier(
1105                    name: int
1106                )
1107                byRef: false
1108                variadic: false
1109                var: Expr_Variable(
1110                    name: a2
1111                )
1112                default: null
1113                hooks: array(
1114                )
1115            )
1116            2: Param(
1117                attrGroups: array(
1118                )
1119                flags: 0
1120                type: Identifier(
1121                    name: float
1122                )
1123                byRef: false
1124                variadic: false
1125                var: Expr_Variable(
1126                    name: a3
1127                )
1128                default: null
1129                hooks: array(
1130                )
1131            )
1132            3: Param(
1133                attrGroups: array(
1134                )
1135                flags: 0
1136                type: Identifier(
1137                    name: string
1138                )
1139                byRef: false
1140                variadic: false
1141                var: Expr_Variable(
1142                    name: a4
1143                )
1144                default: null
1145                hooks: array(
1146                )
1147            )
1148            4: Param(
1149                attrGroups: array(
1150                )
1151                flags: 0
1152                type: Identifier(
1153                    name: iterable
1154                )
1155                byRef: false
1156                variadic: false
1157                var: Expr_Variable(
1158                    name: a5
1159                )
1160                default: null
1161                hooks: array(
1162                )
1163                comments: array(
1164                    0: // PHP 7.0
1165                )
1166            )
1167            5: Param(
1168                attrGroups: array(
1169                )
1170                flags: 0
1171                type: Identifier(
1172                    name: object
1173                )
1174                byRef: false
1175                variadic: false
1176                var: Expr_Variable(
1177                    name: a6
1178                )
1179                default: null
1180                hooks: array(
1181                )
1182                comments: array(
1183                    0: // PHP 7.1
1184                )
1185            )
1186            6: Param(
1187                attrGroups: array(
1188                )
1189                flags: 0
1190                type: Identifier(
1191                    name: mixed
1192                )
1193                byRef: false
1194                variadic: false
1195                var: Expr_Variable(
1196                    name: a7
1197                )
1198                default: null
1199                hooks: array(
1200                )
1201                comments: array(
1202                    0: // PHP 7.2
1203                )
1204            )
1205            7: Param(
1206                attrGroups: array(
1207                )
1208                flags: 0
1209                type: Identifier(
1210                    name: null
1211                )
1212                byRef: false
1213                variadic: false
1214                var: Expr_Variable(
1215                    name: a8
1216                )
1217                default: null
1218                hooks: array(
1219                )
1220                comments: array(
1221                    0: // PHP 8.0
1222                )
1223            )
1224            8: Param(
1225                attrGroups: array(
1226                )
1227                flags: 0
1228                type: Identifier(
1229                    name: false
1230                )
1231                byRef: false
1232                variadic: false
1233                var: Expr_Variable(
1234                    name: a9
1235                )
1236                default: null
1237                hooks: array(
1238                )
1239                comments: array(
1240                    0: // PHP 8.0
1241                )
1242            )
1243        )
1244        returnType: Identifier(
1245            name: void
1246        )
1247        stmts: array(
1248        )
1249    )
1250    1: Stmt_Function(
1251        attrGroups: array(
1252        )
1253        byRef: false
1254        name: Identifier(
1255            name: test2
1256        )
1257        params: array(
1258        )
1259        returnType: Identifier(
1260            name: never
1261        )
1262        stmts: array(
1263        )
1264        comments: array(
1265            0: // PHP 7.1
1266        )
1267    )
1268    2: Stmt_Nop(
1269        comments: array(
1270            0: // PHP 8.1
1271        )
1272    )
1273)
1274