• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "FunctionDeclaration",
6      "function": {
7        "type": "ScriptFunction",
8        "id": {
9          "type": "Identifier",
10          "name": "func1",
11          "decorators": [],
12          "loc": {
13            "start": {
14              "line": 17,
15              "column": 10,
16              "program": "test-func-param.ts"
17            },
18            "end": {
19              "line": 17,
20              "column": 15,
21              "program": "test-func-param.ts"
22            }
23          }
24        },
25        "generator": false,
26        "async": false,
27        "expression": false,
28        "params": [
29          {
30            "type": "Identifier",
31            "name": "a",
32            "typeAnnotation": {
33              "type": "TSNumberKeyword",
34              "loc": {
35                "start": {
36                  "line": 17,
37                  "column": 19,
38                  "program": "test-func-param.ts"
39                },
40                "end": {
41                  "line": 17,
42                  "column": 25,
43                  "program": "test-func-param.ts"
44                }
45              }
46            },
47            "decorators": [],
48            "loc": {
49              "start": {
50                "line": 17,
51                "column": 16,
52                "program": "test-func-param.ts"
53              },
54              "end": {
55                "line": 17,
56                "column": 17,
57                "program": "test-func-param.ts"
58              }
59            }
60          },
61          {
62            "type": "Identifier",
63            "name": "b",
64            "typeAnnotation": {
65              "type": "TSStringKeyword",
66              "loc": {
67                "start": {
68                  "line": 17,
69                  "column": 30,
70                  "program": "test-func-param.ts"
71                },
72                "end": {
73                  "line": 17,
74                  "column": 36,
75                  "program": "test-func-param.ts"
76                }
77              }
78            },
79            "decorators": [],
80            "loc": {
81              "start": {
82                "line": 17,
83                "column": 27,
84                "program": "test-func-param.ts"
85              },
86              "end": {
87                "line": 17,
88                "column": 28,
89                "program": "test-func-param.ts"
90              }
91            }
92          }
93        ],
94        "body": {
95          "type": "BlockStatement",
96          "statements": [],
97          "loc": {
98            "start": {
99              "line": 17,
100              "column": 38,
101              "program": "test-func-param.ts"
102            },
103            "end": {
104              "line": 17,
105              "column": 41,
106              "program": "test-func-param.ts"
107            }
108          }
109        },
110        "loc": {
111          "start": {
112            "line": 17,
113            "column": 1,
114            "program": "test-func-param.ts"
115          },
116          "end": {
117            "line": 17,
118            "column": 41,
119            "program": "test-func-param.ts"
120          }
121        }
122      },
123      "loc": {
124        "start": {
125          "line": 17,
126          "column": 1,
127          "program": "test-func-param.ts"
128        },
129        "end": {
130          "line": 17,
131          "column": 41,
132          "program": "test-func-param.ts"
133        }
134      }
135    },
136    {
137      "type": "FunctionDeclaration",
138      "function": {
139        "type": "ScriptFunction",
140        "id": {
141          "type": "Identifier",
142          "name": "func2",
143          "decorators": [],
144          "loc": {
145            "start": {
146              "line": 18,
147              "column": 10,
148              "program": "test-func-param.ts"
149            },
150            "end": {
151              "line": 18,
152              "column": 15,
153              "program": "test-func-param.ts"
154            }
155          }
156        },
157        "generator": false,
158        "async": false,
159        "expression": false,
160        "params": [
161          {
162            "type": "AssignmentPattern",
163            "left": {
164              "type": "Identifier",
165              "name": "a",
166              "typeAnnotation": {
167                "type": "TSBooleanKeyword",
168                "loc": {
169                  "start": {
170                    "line": 18,
171                    "column": 19,
172                    "program": "test-func-param.ts"
173                  },
174                  "end": {
175                    "line": 18,
176                    "column": 26,
177                    "program": "test-func-param.ts"
178                  }
179                }
180              },
181              "decorators": [],
182              "loc": {
183                "start": {
184                  "line": 18,
185                  "column": 16,
186                  "program": "test-func-param.ts"
187                },
188                "end": {
189                  "line": 18,
190                  "column": 17,
191                  "program": "test-func-param.ts"
192                }
193              }
194            },
195            "right": {
196              "type": "BooleanLiteral",
197              "value": true,
198              "loc": {
199                "start": {
200                  "line": 18,
201                  "column": 29,
202                  "program": "test-func-param.ts"
203                },
204                "end": {
205                  "line": 18,
206                  "column": 33,
207                  "program": "test-func-param.ts"
208                }
209              }
210            },
211            "loc": {
212              "start": {
213                "line": 18,
214                "column": 16,
215                "program": "test-func-param.ts"
216              },
217              "end": {
218                "line": 18,
219                "column": 33,
220                "program": "test-func-param.ts"
221              }
222            }
223          },
224          {
225            "type": "RestElement",
226            "argument": {
227              "type": "Identifier",
228              "name": "b",
229              "typeAnnotation": {
230                "type": "TSArrayType",
231                "elementType": {
232                  "type": "TSNumberKeyword",
233                  "loc": {
234                    "start": {
235                      "line": 18,
236                      "column": 41,
237                      "program": "test-func-param.ts"
238                    },
239                    "end": {
240                      "line": 18,
241                      "column": 47,
242                      "program": "test-func-param.ts"
243                    }
244                  }
245                },
246                "annotations": [],
247                "loc": {
248                  "start": {
249                    "line": 18,
250                    "column": 41,
251                    "program": "test-func-param.ts"
252                  },
253                  "end": {
254                    "line": 18,
255                    "column": 49,
256                    "program": "test-func-param.ts"
257                  }
258                }
259              },
260              "decorators": [],
261              "loc": {
262                "start": {
263                  "line": 18,
264                  "column": 38,
265                  "program": "test-func-param.ts"
266                },
267                "end": {
268                  "line": 18,
269                  "column": 39,
270                  "program": "test-func-param.ts"
271                }
272              }
273            },
274            "loc": {
275              "start": {
276                "line": 18,
277                "column": 35,
278                "program": "test-func-param.ts"
279              },
280              "end": {
281                "line": 18,
282                "column": 39,
283                "program": "test-func-param.ts"
284              }
285            }
286          }
287        ],
288        "body": {
289          "type": "BlockStatement",
290          "statements": [],
291          "loc": {
292            "start": {
293              "line": 18,
294              "column": 51,
295              "program": "test-func-param.ts"
296            },
297            "end": {
298              "line": 18,
299              "column": 54,
300              "program": "test-func-param.ts"
301            }
302          }
303        },
304        "loc": {
305          "start": {
306            "line": 18,
307            "column": 1,
308            "program": "test-func-param.ts"
309          },
310          "end": {
311            "line": 18,
312            "column": 54,
313            "program": "test-func-param.ts"
314          }
315        }
316      },
317      "loc": {
318        "start": {
319          "line": 18,
320          "column": 1,
321          "program": "test-func-param.ts"
322        },
323        "end": {
324          "line": 18,
325          "column": 54,
326          "program": "test-func-param.ts"
327        }
328      }
329    },
330    {
331      "type": "FunctionDeclaration",
332      "function": {
333        "type": "ScriptFunction",
334        "id": {
335          "type": "Identifier",
336          "name": "func3",
337          "decorators": [],
338          "loc": {
339            "start": {
340              "line": 19,
341              "column": 10,
342              "program": "test-func-param.ts"
343            },
344            "end": {
345              "line": 19,
346              "column": 15,
347              "program": "test-func-param.ts"
348            }
349          }
350        },
351        "generator": false,
352        "async": false,
353        "expression": false,
354        "params": [
355          {
356            "type": "AssignmentPattern",
357            "left": {
358              "type": "Identifier",
359              "name": "a",
360              "decorators": [],
361              "loc": {
362                "start": {
363                  "line": 19,
364                  "column": 16,
365                  "program": "test-func-param.ts"
366                },
367                "end": {
368                  "line": 19,
369                  "column": 17,
370                  "program": "test-func-param.ts"
371                }
372              }
373            },
374            "right": {
375              "type": "NumberLiteral",
376              "value": 6,
377              "loc": {
378                "start": {
379                  "line": 19,
380                  "column": 20,
381                  "program": "test-func-param.ts"
382                },
383                "end": {
384                  "line": 19,
385                  "column": 21,
386                  "program": "test-func-param.ts"
387                }
388              }
389            },
390            "loc": {
391              "start": {
392                "line": 19,
393                "column": 16,
394                "program": "test-func-param.ts"
395              },
396              "end": {
397                "line": 19,
398                "column": 21,
399                "program": "test-func-param.ts"
400              }
401            }
402          },
403          {
404            "type": "ArrayPattern",
405            "elements": [
406              {
407                "type": "Identifier",
408                "name": "c",
409                "decorators": [],
410                "loc": {
411                  "start": {
412                    "line": 19,
413                    "column": 24,
414                    "program": "test-func-param.ts"
415                  },
416                  "end": {
417                    "line": 19,
418                    "column": 25,
419                    "program": "test-func-param.ts"
420                  }
421                }
422              },
423              {
424                "type": "Identifier",
425                "name": "d",
426                "decorators": [],
427                "loc": {
428                  "start": {
429                    "line": 19,
430                    "column": 27,
431                    "program": "test-func-param.ts"
432                  },
433                  "end": {
434                    "line": 19,
435                    "column": 28,
436                    "program": "test-func-param.ts"
437                  }
438                }
439              }
440            ],
441            "loc": {
442              "start": {
443                "line": 19,
444                "column": 23,
445                "program": "test-func-param.ts"
446              },
447              "end": {
448                "line": 19,
449                "column": 29,
450                "program": "test-func-param.ts"
451              }
452            }
453          },
454          {
455            "type": "Identifier",
456            "name": "b",
457            "optional": true,
458            "decorators": [],
459            "loc": {
460              "start": {
461                "line": 19,
462                "column": 31,
463                "program": "test-func-param.ts"
464              },
465              "end": {
466                "line": 19,
467                "column": 32,
468                "program": "test-func-param.ts"
469              }
470            }
471          }
472        ],
473        "body": {
474          "type": "BlockStatement",
475          "statements": [],
476          "loc": {
477            "start": {
478              "line": 19,
479              "column": 35,
480              "program": "test-func-param.ts"
481            },
482            "end": {
483              "line": 19,
484              "column": 38,
485              "program": "test-func-param.ts"
486            }
487          }
488        },
489        "loc": {
490          "start": {
491            "line": 19,
492            "column": 1,
493            "program": "test-func-param.ts"
494          },
495          "end": {
496            "line": 19,
497            "column": 38,
498            "program": "test-func-param.ts"
499          }
500        }
501      },
502      "loc": {
503        "start": {
504          "line": 19,
505          "column": 1,
506          "program": "test-func-param.ts"
507        },
508        "end": {
509          "line": 19,
510          "column": 38,
511          "program": "test-func-param.ts"
512        }
513      }
514    },
515    {
516      "type": "FunctionDeclaration",
517      "function": {
518        "type": "ScriptFunction",
519        "id": {
520          "type": "Identifier",
521          "name": "func4",
522          "decorators": [],
523          "loc": {
524            "start": {
525              "line": 20,
526              "column": 10,
527              "program": "test-func-param.ts"
528            },
529            "end": {
530              "line": 20,
531              "column": 15,
532              "program": "test-func-param.ts"
533            }
534          }
535        },
536        "generator": false,
537        "async": false,
538        "expression": false,
539        "params": [
540          {
541            "type": "ObjectPattern",
542            "properties": [],
543            "typeAnnotation": {
544              "type": "TSNumberKeyword",
545              "loc": {
546                "start": {
547                  "line": 20,
548                  "column": 21,
549                  "program": "test-func-param.ts"
550                },
551                "end": {
552                  "line": 20,
553                  "column": 27,
554                  "program": "test-func-param.ts"
555                }
556              }
557            },
558            "loc": {
559              "start": {
560                "line": 20,
561                "column": 16,
562                "program": "test-func-param.ts"
563              },
564              "end": {
565                "line": 20,
566                "column": 19,
567                "program": "test-func-param.ts"
568              }
569            }
570          },
571          {
572            "type": "ArrayPattern",
573            "elements": [
574              {
575                "type": "Identifier",
576                "name": "a",
577                "decorators": [],
578                "loc": {
579                  "start": {
580                    "line": 20,
581                    "column": 30,
582                    "program": "test-func-param.ts"
583                  },
584                  "end": {
585                    "line": 20,
586                    "column": 31,
587                    "program": "test-func-param.ts"
588                  }
589                }
590              },
591              {
592                "type": "Identifier",
593                "name": "b",
594                "decorators": [],
595                "loc": {
596                  "start": {
597                    "line": 20,
598                    "column": 33,
599                    "program": "test-func-param.ts"
600                  },
601                  "end": {
602                    "line": 20,
603                    "column": 34,
604                    "program": "test-func-param.ts"
605                  }
606                }
607              }
608            ],
609            "typeAnnotation": {
610              "type": "TSArrayType",
611              "elementType": {
612                "type": "TSStringKeyword",
613                "loc": {
614                  "start": {
615                    "line": 20,
616                    "column": 37,
617                    "program": "test-func-param.ts"
618                  },
619                  "end": {
620                    "line": 20,
621                    "column": 43,
622                    "program": "test-func-param.ts"
623                  }
624                }
625              },
626              "annotations": [],
627              "loc": {
628                "start": {
629                  "line": 20,
630                  "column": 37,
631                  "program": "test-func-param.ts"
632                },
633                "end": {
634                  "line": 20,
635                  "column": 45,
636                  "program": "test-func-param.ts"
637                }
638              }
639            },
640            "loc": {
641              "start": {
642                "line": 20,
643                "column": 29,
644                "program": "test-func-param.ts"
645              },
646              "end": {
647                "line": 20,
648                "column": 35,
649                "program": "test-func-param.ts"
650              }
651            }
652          }
653        ],
654        "body": {
655          "type": "BlockStatement",
656          "statements": [],
657          "loc": {
658            "start": {
659              "line": 20,
660              "column": 47,
661              "program": "test-func-param.ts"
662            },
663            "end": {
664              "line": 20,
665              "column": 50,
666              "program": "test-func-param.ts"
667            }
668          }
669        },
670        "loc": {
671          "start": {
672            "line": 20,
673            "column": 1,
674            "program": "test-func-param.ts"
675          },
676          "end": {
677            "line": 20,
678            "column": 50,
679            "program": "test-func-param.ts"
680          }
681        }
682      },
683      "loc": {
684        "start": {
685          "line": 20,
686          "column": 1,
687          "program": "test-func-param.ts"
688        },
689        "end": {
690          "line": 20,
691          "column": 50,
692          "program": "test-func-param.ts"
693        }
694      }
695    },
696    {
697      "type": "FunctionDeclaration",
698      "function": {
699        "type": "ScriptFunction",
700        "id": {
701          "type": "Identifier",
702          "name": "func5",
703          "decorators": [],
704          "loc": {
705            "start": {
706              "line": 21,
707              "column": 10,
708              "program": "test-func-param.ts"
709            },
710            "end": {
711              "line": 21,
712              "column": 15,
713              "program": "test-func-param.ts"
714            }
715          }
716        },
717        "generator": false,
718        "async": false,
719        "expression": false,
720        "params": [
721          {
722            "type": "AssignmentPattern",
723            "left": {
724              "type": "ArrayPattern",
725              "elements": [
726                {
727                  "type": "Identifier",
728                  "name": "a",
729                  "decorators": [],
730                  "loc": {
731                    "start": {
732                      "line": 21,
733                      "column": 17,
734                      "program": "test-func-param.ts"
735                    },
736                    "end": {
737                      "line": 21,
738                      "column": 18,
739                      "program": "test-func-param.ts"
740                    }
741                  }
742                },
743                {
744                  "type": "Identifier",
745                  "name": "b",
746                  "decorators": [],
747                  "loc": {
748                    "start": {
749                      "line": 21,
750                      "column": 20,
751                      "program": "test-func-param.ts"
752                    },
753                    "end": {
754                      "line": 21,
755                      "column": 21,
756                      "program": "test-func-param.ts"
757                    }
758                  }
759                }
760              ],
761              "typeAnnotation": {
762                "type": "TSTupleType",
763                "elementTypes": [
764                  {
765                    "type": "TSNumberKeyword",
766                    "loc": {
767                      "start": {
768                        "line": 21,
769                        "column": 25,
770                        "program": "test-func-param.ts"
771                      },
772                      "end": {
773                        "line": 21,
774                        "column": 32,
775                        "program": "test-func-param.ts"
776                      }
777                    }
778                  },
779                  {
780                    "type": "TSStringKeyword",
781                    "loc": {
782                      "start": {
783                        "line": 21,
784                        "column": 33,
785                        "program": "test-func-param.ts"
786                      },
787                      "end": {
788                        "line": 21,
789                        "column": 40,
790                        "program": "test-func-param.ts"
791                      }
792                    }
793                  }
794                ],
795                "loc": {
796                  "start": {
797                    "line": 21,
798                    "column": 24,
799                    "program": "test-func-param.ts"
800                  },
801                  "end": {
802                    "line": 21,
803                    "column": 40,
804                    "program": "test-func-param.ts"
805                  }
806                }
807              },
808              "loc": {
809                "start": {
810                  "line": 21,
811                  "column": 16,
812                  "program": "test-func-param.ts"
813                },
814                "end": {
815                  "line": 21,
816                  "column": 22,
817                  "program": "test-func-param.ts"
818                }
819              }
820            },
821            "right": {
822              "type": "ArrayExpression",
823              "elements": [
824                {
825                  "type": "NumberLiteral",
826                  "value": 1,
827                  "loc": {
828                    "start": {
829                      "line": 21,
830                      "column": 44,
831                      "program": "test-func-param.ts"
832                    },
833                    "end": {
834                      "line": 21,
835                      "column": 45,
836                      "program": "test-func-param.ts"
837                    }
838                  }
839                },
840                {
841                  "type": "StringLiteral",
842                  "value": "foo",
843                  "loc": {
844                    "start": {
845                      "line": 21,
846                      "column": 47,
847                      "program": "test-func-param.ts"
848                    },
849                    "end": {
850                      "line": 21,
851                      "column": 52,
852                      "program": "test-func-param.ts"
853                    }
854                  }
855                }
856              ],
857              "loc": {
858                "start": {
859                  "line": 21,
860                  "column": 43,
861                  "program": "test-func-param.ts"
862                },
863                "end": {
864                  "line": 21,
865                  "column": 53,
866                  "program": "test-func-param.ts"
867                }
868              }
869            },
870            "loc": {
871              "start": {
872                "line": 21,
873                "column": 16,
874                "program": "test-func-param.ts"
875              },
876              "end": {
877                "line": 21,
878                "column": 53,
879                "program": "test-func-param.ts"
880              }
881            }
882          }
883        ],
884        "body": {
885          "type": "BlockStatement",
886          "statements": [],
887          "loc": {
888            "start": {
889              "line": 21,
890              "column": 55,
891              "program": "test-func-param.ts"
892            },
893            "end": {
894              "line": 21,
895              "column": 58,
896              "program": "test-func-param.ts"
897            }
898          }
899        },
900        "loc": {
901          "start": {
902            "line": 21,
903            "column": 1,
904            "program": "test-func-param.ts"
905          },
906          "end": {
907            "line": 21,
908            "column": 58,
909            "program": "test-func-param.ts"
910          }
911        }
912      },
913      "loc": {
914        "start": {
915          "line": 21,
916          "column": 1,
917          "program": "test-func-param.ts"
918        },
919        "end": {
920          "line": 21,
921          "column": 58,
922          "program": "test-func-param.ts"
923        }
924      }
925    },
926    {
927      "type": "FunctionDeclaration",
928      "function": {
929        "type": "ScriptFunction",
930        "id": {
931          "type": "Identifier",
932          "name": "func6",
933          "decorators": [],
934          "loc": {
935            "start": {
936              "line": 22,
937              "column": 10,
938              "program": "test-func-param.ts"
939            },
940            "end": {
941              "line": 22,
942              "column": 15,
943              "program": "test-func-param.ts"
944            }
945          }
946        },
947        "generator": false,
948        "async": false,
949        "expression": false,
950        "params": [
951          {
952            "type": "AssignmentPattern",
953            "left": {
954              "type": "ObjectPattern",
955              "properties": [
956                {
957                  "type": "Property",
958                  "method": false,
959                  "shorthand": true,
960                  "computed": false,
961                  "key": {
962                    "type": "Identifier",
963                    "name": "a",
964                    "decorators": [],
965                    "loc": {
966                      "start": {
967                        "line": 22,
968                        "column": 18,
969                        "program": "test-func-param.ts"
970                      },
971                      "end": {
972                        "line": 22,
973                        "column": 19,
974                        "program": "test-func-param.ts"
975                      }
976                    }
977                  },
978                  "value": {
979                    "type": "Identifier",
980                    "name": "a",
981                    "decorators": [],
982                    "loc": {
983                      "start": {
984                        "line": 22,
985                        "column": 18,
986                        "program": "test-func-param.ts"
987                      },
988                      "end": {
989                        "line": 22,
990                        "column": 19,
991                        "program": "test-func-param.ts"
992                      }
993                    }
994                  },
995                  "kind": "init",
996                  "loc": {
997                    "start": {
998                      "line": 22,
999                      "column": 18,
1000                      "program": "test-func-param.ts"
1001                    },
1002                    "end": {
1003                      "line": 22,
1004                      "column": 19,
1005                      "program": "test-func-param.ts"
1006                    }
1007                  }
1008                },
1009                {
1010                  "type": "Property",
1011                  "method": false,
1012                  "shorthand": true,
1013                  "computed": false,
1014                  "key": {
1015                    "type": "Identifier",
1016                    "name": "b",
1017                    "decorators": [],
1018                    "loc": {
1019                      "start": {
1020                        "line": 22,
1021                        "column": 21,
1022                        "program": "test-func-param.ts"
1023                      },
1024                      "end": {
1025                        "line": 22,
1026                        "column": 22,
1027                        "program": "test-func-param.ts"
1028                      }
1029                    }
1030                  },
1031                  "value": {
1032                    "type": "Identifier",
1033                    "name": "b",
1034                    "decorators": [],
1035                    "loc": {
1036                      "start": {
1037                        "line": 22,
1038                        "column": 21,
1039                        "program": "test-func-param.ts"
1040                      },
1041                      "end": {
1042                        "line": 22,
1043                        "column": 22,
1044                        "program": "test-func-param.ts"
1045                      }
1046                    }
1047                  },
1048                  "kind": "init",
1049                  "loc": {
1050                    "start": {
1051                      "line": 22,
1052                      "column": 21,
1053                      "program": "test-func-param.ts"
1054                    },
1055                    "end": {
1056                      "line": 22,
1057                      "column": 22,
1058                      "program": "test-func-param.ts"
1059                    }
1060                  }
1061                }
1062              ],
1063              "typeAnnotation": {
1064                "type": "TSTypeLiteral",
1065                "members": [
1066                  {
1067                    "type": "TSPropertySignature",
1068                    "computed": false,
1069                    "optional": false,
1070                    "readonly": false,
1071                    "key": {
1072                      "type": "Identifier",
1073                      "name": "a",
1074                      "decorators": [],
1075                      "loc": {
1076                        "start": {
1077                          "line": 22,
1078                          "column": 28,
1079                          "program": "test-func-param.ts"
1080                        },
1081                        "end": {
1082                          "line": 22,
1083                          "column": 29,
1084                          "program": "test-func-param.ts"
1085                        }
1086                      }
1087                    },
1088                    "typeAnnotation": {
1089                      "type": "TSNumberKeyword",
1090                      "loc": {
1091                        "start": {
1092                          "line": 22,
1093                          "column": 31,
1094                          "program": "test-func-param.ts"
1095                        },
1096                        "end": {
1097                          "line": 22,
1098                          "column": 37,
1099                          "program": "test-func-param.ts"
1100                        }
1101                      }
1102                    },
1103                    "loc": {
1104                      "start": {
1105                        "line": 22,
1106                        "column": 28,
1107                        "program": "test-func-param.ts"
1108                      },
1109                      "end": {
1110                        "line": 22,
1111                        "column": 38,
1112                        "program": "test-func-param.ts"
1113                      }
1114                    }
1115                  },
1116                  {
1117                    "type": "TSPropertySignature",
1118                    "computed": false,
1119                    "optional": false,
1120                    "readonly": false,
1121                    "key": {
1122                      "type": "Identifier",
1123                      "name": "b",
1124                      "decorators": [],
1125                      "loc": {
1126                        "start": {
1127                          "line": 22,
1128                          "column": 39,
1129                          "program": "test-func-param.ts"
1130                        },
1131                        "end": {
1132                          "line": 22,
1133                          "column": 40,
1134                          "program": "test-func-param.ts"
1135                        }
1136                      }
1137                    },
1138                    "typeAnnotation": {
1139                      "type": "TSNumberKeyword",
1140                      "loc": {
1141                        "start": {
1142                          "line": 22,
1143                          "column": 42,
1144                          "program": "test-func-param.ts"
1145                        },
1146                        "end": {
1147                          "line": 22,
1148                          "column": 48,
1149                          "program": "test-func-param.ts"
1150                        }
1151                      }
1152                    },
1153                    "loc": {
1154                      "start": {
1155                        "line": 22,
1156                        "column": 39,
1157                        "program": "test-func-param.ts"
1158                      },
1159                      "end": {
1160                        "line": 22,
1161                        "column": 50,
1162                        "program": "test-func-param.ts"
1163                      }
1164                    }
1165                  }
1166                ],
1167                "loc": {
1168                  "start": {
1169                    "line": 22,
1170                    "column": 26,
1171                    "program": "test-func-param.ts"
1172                  },
1173                  "end": {
1174                    "line": 22,
1175                    "column": 50,
1176                    "program": "test-func-param.ts"
1177                  }
1178                }
1179              },
1180              "loc": {
1181                "start": {
1182                  "line": 22,
1183                  "column": 16,
1184                  "program": "test-func-param.ts"
1185                },
1186                "end": {
1187                  "line": 22,
1188                  "column": 24,
1189                  "program": "test-func-param.ts"
1190                }
1191              }
1192            },
1193            "right": {
1194              "type": "ObjectExpression",
1195              "properties": [
1196                {
1197                  "type": "Property",
1198                  "method": false,
1199                  "shorthand": false,
1200                  "computed": false,
1201                  "key": {
1202                    "type": "Identifier",
1203                    "name": "a",
1204                    "decorators": [],
1205                    "loc": {
1206                      "start": {
1207                        "line": 22,
1208                        "column": 55,
1209                        "program": "test-func-param.ts"
1210                      },
1211                      "end": {
1212                        "line": 22,
1213                        "column": 56,
1214                        "program": "test-func-param.ts"
1215                      }
1216                    }
1217                  },
1218                  "value": {
1219                    "type": "NumberLiteral",
1220                    "value": 0,
1221                    "loc": {
1222                      "start": {
1223                        "line": 22,
1224                        "column": 58,
1225                        "program": "test-func-param.ts"
1226                      },
1227                      "end": {
1228                        "line": 22,
1229                        "column": 59,
1230                        "program": "test-func-param.ts"
1231                      }
1232                    }
1233                  },
1234                  "kind": "init",
1235                  "loc": {
1236                    "start": {
1237                      "line": 22,
1238                      "column": 55,
1239                      "program": "test-func-param.ts"
1240                    },
1241                    "end": {
1242                      "line": 22,
1243                      "column": 59,
1244                      "program": "test-func-param.ts"
1245                    }
1246                  }
1247                },
1248                {
1249                  "type": "Property",
1250                  "method": false,
1251                  "shorthand": false,
1252                  "computed": false,
1253                  "key": {
1254                    "type": "Identifier",
1255                    "name": "b",
1256                    "decorators": [],
1257                    "loc": {
1258                      "start": {
1259                        "line": 22,
1260                        "column": 61,
1261                        "program": "test-func-param.ts"
1262                      },
1263                      "end": {
1264                        "line": 22,
1265                        "column": 62,
1266                        "program": "test-func-param.ts"
1267                      }
1268                    }
1269                  },
1270                  "value": {
1271                    "type": "NumberLiteral",
1272                    "value": 0,
1273                    "loc": {
1274                      "start": {
1275                        "line": 22,
1276                        "column": 64,
1277                        "program": "test-func-param.ts"
1278                      },
1279                      "end": {
1280                        "line": 22,
1281                        "column": 65,
1282                        "program": "test-func-param.ts"
1283                      }
1284                    }
1285                  },
1286                  "kind": "init",
1287                  "loc": {
1288                    "start": {
1289                      "line": 22,
1290                      "column": 61,
1291                      "program": "test-func-param.ts"
1292                    },
1293                    "end": {
1294                      "line": 22,
1295                      "column": 65,
1296                      "program": "test-func-param.ts"
1297                    }
1298                  }
1299                }
1300              ],
1301              "loc": {
1302                "start": {
1303                  "line": 22,
1304                  "column": 53,
1305                  "program": "test-func-param.ts"
1306                },
1307                "end": {
1308                  "line": 22,
1309                  "column": 67,
1310                  "program": "test-func-param.ts"
1311                }
1312              }
1313            },
1314            "loc": {
1315              "start": {
1316                "line": 22,
1317                "column": 16,
1318                "program": "test-func-param.ts"
1319              },
1320              "end": {
1321                "line": 22,
1322                "column": 67,
1323                "program": "test-func-param.ts"
1324              }
1325            }
1326          }
1327        ],
1328        "body": {
1329          "type": "BlockStatement",
1330          "statements": [],
1331          "loc": {
1332            "start": {
1333              "line": 22,
1334              "column": 69,
1335              "program": "test-func-param.ts"
1336            },
1337            "end": {
1338              "line": 22,
1339              "column": 72,
1340              "program": "test-func-param.ts"
1341            }
1342          }
1343        },
1344        "loc": {
1345          "start": {
1346            "line": 22,
1347            "column": 1,
1348            "program": "test-func-param.ts"
1349          },
1350          "end": {
1351            "line": 22,
1352            "column": 72,
1353            "program": "test-func-param.ts"
1354          }
1355        }
1356      },
1357      "loc": {
1358        "start": {
1359          "line": 22,
1360          "column": 1,
1361          "program": "test-func-param.ts"
1362        },
1363        "end": {
1364          "line": 22,
1365          "column": 72,
1366          "program": "test-func-param.ts"
1367        }
1368      }
1369    },
1370    {
1371      "type": "TSDeclareFunction",
1372      "function": {
1373        "type": "ScriptFunction",
1374        "id": {
1375          "type": "Identifier",
1376          "name": "func7",
1377          "decorators": [],
1378          "loc": {
1379            "start": {
1380              "line": 23,
1381              "column": 18,
1382              "program": "test-func-param.ts"
1383            },
1384            "end": {
1385              "line": 23,
1386              "column": 23,
1387              "program": "test-func-param.ts"
1388            }
1389          }
1390        },
1391        "generator": false,
1392        "async": false,
1393        "expression": false,
1394        "params": [
1395          {
1396            "type": "ArrayPattern",
1397            "elements": [
1398              {
1399                "type": "Identifier",
1400                "name": "a",
1401                "decorators": [],
1402                "loc": {
1403                  "start": {
1404                    "line": 23,
1405                    "column": 25,
1406                    "program": "test-func-param.ts"
1407                  },
1408                  "end": {
1409                    "line": 23,
1410                    "column": 26,
1411                    "program": "test-func-param.ts"
1412                  }
1413                }
1414              },
1415              {
1416                "type": "Identifier",
1417                "name": "b",
1418                "decorators": [],
1419                "loc": {
1420                  "start": {
1421                    "line": 23,
1422                    "column": 28,
1423                    "program": "test-func-param.ts"
1424                  },
1425                  "end": {
1426                    "line": 23,
1427                    "column": 29,
1428                    "program": "test-func-param.ts"
1429                  }
1430                }
1431              }
1432            ],
1433            "typeAnnotation": {
1434              "type": "TSTupleType",
1435              "elementTypes": [
1436                {
1437                  "type": "TSNumberKeyword",
1438                  "loc": {
1439                    "start": {
1440                      "line": 23,
1441                      "column": 33,
1442                      "program": "test-func-param.ts"
1443                    },
1444                    "end": {
1445                      "line": 23,
1446                      "column": 40,
1447                      "program": "test-func-param.ts"
1448                    }
1449                  }
1450                },
1451                {
1452                  "type": "TSStringKeyword",
1453                  "loc": {
1454                    "start": {
1455                      "line": 23,
1456                      "column": 41,
1457                      "program": "test-func-param.ts"
1458                    },
1459                    "end": {
1460                      "line": 23,
1461                      "column": 48,
1462                      "program": "test-func-param.ts"
1463                    }
1464                  }
1465                }
1466              ],
1467              "loc": {
1468                "start": {
1469                  "line": 23,
1470                  "column": 32,
1471                  "program": "test-func-param.ts"
1472                },
1473                "end": {
1474                  "line": 23,
1475                  "column": 48,
1476                  "program": "test-func-param.ts"
1477                }
1478              }
1479            },
1480            "loc": {
1481              "start": {
1482                "line": 23,
1483                "column": 24,
1484                "program": "test-func-param.ts"
1485              },
1486              "end": {
1487                "line": 23,
1488                "column": 30,
1489                "program": "test-func-param.ts"
1490              }
1491            }
1492          }
1493        ],
1494        "loc": {
1495          "start": {
1496            "line": 23,
1497            "column": 9,
1498            "program": "test-func-param.ts"
1499          },
1500          "end": {
1501            "line": 24,
1502            "column": 8,
1503            "program": "test-func-param.ts"
1504          }
1505        }
1506      },
1507      "loc": {
1508        "start": {
1509          "line": 23,
1510          "column": 9,
1511          "program": "test-func-param.ts"
1512        },
1513        "end": {
1514          "line": 24,
1515          "column": 8,
1516          "program": "test-func-param.ts"
1517        }
1518      }
1519    },
1520    {
1521      "type": "TSDeclareFunction",
1522      "function": {
1523        "type": "ScriptFunction",
1524        "id": {
1525          "type": "Identifier",
1526          "name": "func8",
1527          "decorators": [],
1528          "loc": {
1529            "start": {
1530              "line": 24,
1531              "column": 18,
1532              "program": "test-func-param.ts"
1533            },
1534            "end": {
1535              "line": 24,
1536              "column": 23,
1537              "program": "test-func-param.ts"
1538            }
1539          }
1540        },
1541        "generator": false,
1542        "async": false,
1543        "expression": false,
1544        "params": [
1545          {
1546            "type": "ObjectPattern",
1547            "properties": [
1548              {
1549                "type": "Property",
1550                "method": false,
1551                "shorthand": true,
1552                "computed": false,
1553                "key": {
1554                  "type": "Identifier",
1555                  "name": "a",
1556                  "decorators": [],
1557                  "loc": {
1558                    "start": {
1559                      "line": 24,
1560                      "column": 26,
1561                      "program": "test-func-param.ts"
1562                    },
1563                    "end": {
1564                      "line": 24,
1565                      "column": 27,
1566                      "program": "test-func-param.ts"
1567                    }
1568                  }
1569                },
1570                "value": {
1571                  "type": "Identifier",
1572                  "name": "a",
1573                  "decorators": [],
1574                  "loc": {
1575                    "start": {
1576                      "line": 24,
1577                      "column": 26,
1578                      "program": "test-func-param.ts"
1579                    },
1580                    "end": {
1581                      "line": 24,
1582                      "column": 27,
1583                      "program": "test-func-param.ts"
1584                    }
1585                  }
1586                },
1587                "kind": "init",
1588                "loc": {
1589                  "start": {
1590                    "line": 24,
1591                    "column": 26,
1592                    "program": "test-func-param.ts"
1593                  },
1594                  "end": {
1595                    "line": 24,
1596                    "column": 27,
1597                    "program": "test-func-param.ts"
1598                  }
1599                }
1600              },
1601              {
1602                "type": "Property",
1603                "method": false,
1604                "shorthand": true,
1605                "computed": false,
1606                "key": {
1607                  "type": "Identifier",
1608                  "name": "b",
1609                  "decorators": [],
1610                  "loc": {
1611                    "start": {
1612                      "line": 24,
1613                      "column": 29,
1614                      "program": "test-func-param.ts"
1615                    },
1616                    "end": {
1617                      "line": 24,
1618                      "column": 30,
1619                      "program": "test-func-param.ts"
1620                    }
1621                  }
1622                },
1623                "value": {
1624                  "type": "Identifier",
1625                  "name": "b",
1626                  "decorators": [],
1627                  "loc": {
1628                    "start": {
1629                      "line": 24,
1630                      "column": 29,
1631                      "program": "test-func-param.ts"
1632                    },
1633                    "end": {
1634                      "line": 24,
1635                      "column": 30,
1636                      "program": "test-func-param.ts"
1637                    }
1638                  }
1639                },
1640                "kind": "init",
1641                "loc": {
1642                  "start": {
1643                    "line": 24,
1644                    "column": 29,
1645                    "program": "test-func-param.ts"
1646                  },
1647                  "end": {
1648                    "line": 24,
1649                    "column": 30,
1650                    "program": "test-func-param.ts"
1651                  }
1652                }
1653              }
1654            ],
1655            "typeAnnotation": {
1656              "type": "TSTypeLiteral",
1657              "members": [
1658                {
1659                  "type": "TSPropertySignature",
1660                  "computed": false,
1661                  "optional": false,
1662                  "readonly": false,
1663                  "key": {
1664                    "type": "Identifier",
1665                    "name": "a",
1666                    "decorators": [],
1667                    "loc": {
1668                      "start": {
1669                        "line": 24,
1670                        "column": 36,
1671                        "program": "test-func-param.ts"
1672                      },
1673                      "end": {
1674                        "line": 24,
1675                        "column": 37,
1676                        "program": "test-func-param.ts"
1677                      }
1678                    }
1679                  },
1680                  "typeAnnotation": {
1681                    "type": "TSNumberKeyword",
1682                    "loc": {
1683                      "start": {
1684                        "line": 24,
1685                        "column": 39,
1686                        "program": "test-func-param.ts"
1687                      },
1688                      "end": {
1689                        "line": 24,
1690                        "column": 45,
1691                        "program": "test-func-param.ts"
1692                      }
1693                    }
1694                  },
1695                  "loc": {
1696                    "start": {
1697                      "line": 24,
1698                      "column": 36,
1699                      "program": "test-func-param.ts"
1700                    },
1701                    "end": {
1702                      "line": 24,
1703                      "column": 46,
1704                      "program": "test-func-param.ts"
1705                    }
1706                  }
1707                },
1708                {
1709                  "type": "TSPropertySignature",
1710                  "computed": false,
1711                  "optional": false,
1712                  "readonly": false,
1713                  "key": {
1714                    "type": "Identifier",
1715                    "name": "b",
1716                    "decorators": [],
1717                    "loc": {
1718                      "start": {
1719                        "line": 24,
1720                        "column": 47,
1721                        "program": "test-func-param.ts"
1722                      },
1723                      "end": {
1724                        "line": 24,
1725                        "column": 48,
1726                        "program": "test-func-param.ts"
1727                      }
1728                    }
1729                  },
1730                  "typeAnnotation": {
1731                    "type": "TSNumberKeyword",
1732                    "loc": {
1733                      "start": {
1734                        "line": 24,
1735                        "column": 50,
1736                        "program": "test-func-param.ts"
1737                      },
1738                      "end": {
1739                        "line": 24,
1740                        "column": 56,
1741                        "program": "test-func-param.ts"
1742                      }
1743                    }
1744                  },
1745                  "loc": {
1746                    "start": {
1747                      "line": 24,
1748                      "column": 47,
1749                      "program": "test-func-param.ts"
1750                    },
1751                    "end": {
1752                      "line": 24,
1753                      "column": 58,
1754                      "program": "test-func-param.ts"
1755                    }
1756                  }
1757                }
1758              ],
1759              "loc": {
1760                "start": {
1761                  "line": 24,
1762                  "column": 34,
1763                  "program": "test-func-param.ts"
1764                },
1765                "end": {
1766                  "line": 24,
1767                  "column": 58,
1768                  "program": "test-func-param.ts"
1769                }
1770              }
1771            },
1772            "loc": {
1773              "start": {
1774                "line": 24,
1775                "column": 24,
1776                "program": "test-func-param.ts"
1777              },
1778              "end": {
1779                "line": 24,
1780                "column": 32,
1781                "program": "test-func-param.ts"
1782              }
1783            }
1784          }
1785        ],
1786        "loc": {
1787          "start": {
1788            "line": 24,
1789            "column": 9,
1790            "program": "test-func-param.ts"
1791          },
1792          "end": {
1793            "line": 25,
1794            "column": 8,
1795            "program": "test-func-param.ts"
1796          }
1797        }
1798      },
1799      "loc": {
1800        "start": {
1801          "line": 24,
1802          "column": 9,
1803          "program": "test-func-param.ts"
1804        },
1805        "end": {
1806          "line": 25,
1807          "column": 8,
1808          "program": "test-func-param.ts"
1809        }
1810      }
1811    },
1812    {
1813      "type": "TSDeclareFunction",
1814      "function": {
1815        "type": "ScriptFunction",
1816        "id": {
1817          "type": "Identifier",
1818          "name": "func9",
1819          "decorators": [],
1820          "loc": {
1821            "start": {
1822              "line": 25,
1823              "column": 18,
1824              "program": "test-func-param.ts"
1825            },
1826            "end": {
1827              "line": 25,
1828              "column": 23,
1829              "program": "test-func-param.ts"
1830            }
1831          }
1832        },
1833        "generator": false,
1834        "async": false,
1835        "expression": false,
1836        "params": [
1837          {
1838            "type": "ArrayPattern",
1839            "elements": [
1840              {
1841                "type": "Identifier",
1842                "name": "a",
1843                "decorators": [],
1844                "loc": {
1845                  "start": {
1846                    "line": 25,
1847                    "column": 25,
1848                    "program": "test-func-param.ts"
1849                  },
1850                  "end": {
1851                    "line": 25,
1852                    "column": 26,
1853                    "program": "test-func-param.ts"
1854                  }
1855                }
1856              },
1857              {
1858                "type": "Identifier",
1859                "name": "b",
1860                "decorators": [],
1861                "loc": {
1862                  "start": {
1863                    "line": 25,
1864                    "column": 28,
1865                    "program": "test-func-param.ts"
1866                  },
1867                  "end": {
1868                    "line": 25,
1869                    "column": 29,
1870                    "program": "test-func-param.ts"
1871                  }
1872                }
1873              }
1874            ],
1875            "typeAnnotation": {
1876              "type": "TSTupleType",
1877              "elementTypes": [
1878                {
1879                  "type": "TSNumberKeyword",
1880                  "loc": {
1881                    "start": {
1882                      "line": 25,
1883                      "column": 34,
1884                      "program": "test-func-param.ts"
1885                    },
1886                    "end": {
1887                      "line": 25,
1888                      "column": 41,
1889                      "program": "test-func-param.ts"
1890                    }
1891                  }
1892                },
1893                {
1894                  "type": "TSStringKeyword",
1895                  "loc": {
1896                    "start": {
1897                      "line": 25,
1898                      "column": 42,
1899                      "program": "test-func-param.ts"
1900                    },
1901                    "end": {
1902                      "line": 25,
1903                      "column": 49,
1904                      "program": "test-func-param.ts"
1905                    }
1906                  }
1907                }
1908              ],
1909              "loc": {
1910                "start": {
1911                  "line": 25,
1912                  "column": 33,
1913                  "program": "test-func-param.ts"
1914                },
1915                "end": {
1916                  "line": 25,
1917                  "column": 49,
1918                  "program": "test-func-param.ts"
1919                }
1920              }
1921            },
1922            "optional": true,
1923            "loc": {
1924              "start": {
1925                "line": 25,
1926                "column": 24,
1927                "program": "test-func-param.ts"
1928              },
1929              "end": {
1930                "line": 25,
1931                "column": 30,
1932                "program": "test-func-param.ts"
1933              }
1934            }
1935          }
1936        ],
1937        "loc": {
1938          "start": {
1939            "line": 25,
1940            "column": 9,
1941            "program": "test-func-param.ts"
1942          },
1943          "end": {
1944            "line": 26,
1945            "column": 8,
1946            "program": "test-func-param.ts"
1947          }
1948        }
1949      },
1950      "loc": {
1951        "start": {
1952          "line": 25,
1953          "column": 9,
1954          "program": "test-func-param.ts"
1955        },
1956        "end": {
1957          "line": 26,
1958          "column": 8,
1959          "program": "test-func-param.ts"
1960        }
1961      }
1962    },
1963    {
1964      "type": "TSDeclareFunction",
1965      "function": {
1966        "type": "ScriptFunction",
1967        "id": {
1968          "type": "Identifier",
1969          "name": "func10",
1970          "decorators": [],
1971          "loc": {
1972            "start": {
1973              "line": 26,
1974              "column": 18,
1975              "program": "test-func-param.ts"
1976            },
1977            "end": {
1978              "line": 26,
1979              "column": 24,
1980              "program": "test-func-param.ts"
1981            }
1982          }
1983        },
1984        "generator": false,
1985        "async": false,
1986        "expression": false,
1987        "params": [
1988          {
1989            "type": "ObjectPattern",
1990            "properties": [
1991              {
1992                "type": "Property",
1993                "method": false,
1994                "shorthand": true,
1995                "computed": false,
1996                "key": {
1997                  "type": "Identifier",
1998                  "name": "a",
1999                  "decorators": [],
2000                  "loc": {
2001                    "start": {
2002                      "line": 26,
2003                      "column": 27,
2004                      "program": "test-func-param.ts"
2005                    },
2006                    "end": {
2007                      "line": 26,
2008                      "column": 28,
2009                      "program": "test-func-param.ts"
2010                    }
2011                  }
2012                },
2013                "value": {
2014                  "type": "Identifier",
2015                  "name": "a",
2016                  "decorators": [],
2017                  "loc": {
2018                    "start": {
2019                      "line": 26,
2020                      "column": 27,
2021                      "program": "test-func-param.ts"
2022                    },
2023                    "end": {
2024                      "line": 26,
2025                      "column": 28,
2026                      "program": "test-func-param.ts"
2027                    }
2028                  }
2029                },
2030                "kind": "init",
2031                "loc": {
2032                  "start": {
2033                    "line": 26,
2034                    "column": 27,
2035                    "program": "test-func-param.ts"
2036                  },
2037                  "end": {
2038                    "line": 26,
2039                    "column": 28,
2040                    "program": "test-func-param.ts"
2041                  }
2042                }
2043              },
2044              {
2045                "type": "Property",
2046                "method": false,
2047                "shorthand": true,
2048                "computed": false,
2049                "key": {
2050                  "type": "Identifier",
2051                  "name": "b",
2052                  "decorators": [],
2053                  "loc": {
2054                    "start": {
2055                      "line": 26,
2056                      "column": 30,
2057                      "program": "test-func-param.ts"
2058                    },
2059                    "end": {
2060                      "line": 26,
2061                      "column": 31,
2062                      "program": "test-func-param.ts"
2063                    }
2064                  }
2065                },
2066                "value": {
2067                  "type": "Identifier",
2068                  "name": "b",
2069                  "decorators": [],
2070                  "loc": {
2071                    "start": {
2072                      "line": 26,
2073                      "column": 30,
2074                      "program": "test-func-param.ts"
2075                    },
2076                    "end": {
2077                      "line": 26,
2078                      "column": 31,
2079                      "program": "test-func-param.ts"
2080                    }
2081                  }
2082                },
2083                "kind": "init",
2084                "loc": {
2085                  "start": {
2086                    "line": 26,
2087                    "column": 30,
2088                    "program": "test-func-param.ts"
2089                  },
2090                  "end": {
2091                    "line": 26,
2092                    "column": 31,
2093                    "program": "test-func-param.ts"
2094                  }
2095                }
2096              }
2097            ],
2098            "typeAnnotation": {
2099              "type": "TSTypeLiteral",
2100              "members": [
2101                {
2102                  "type": "TSPropertySignature",
2103                  "computed": false,
2104                  "optional": false,
2105                  "readonly": false,
2106                  "key": {
2107                    "type": "Identifier",
2108                    "name": "a",
2109                    "decorators": [],
2110                    "loc": {
2111                      "start": {
2112                        "line": 26,
2113                        "column": 38,
2114                        "program": "test-func-param.ts"
2115                      },
2116                      "end": {
2117                        "line": 26,
2118                        "column": 39,
2119                        "program": "test-func-param.ts"
2120                      }
2121                    }
2122                  },
2123                  "typeAnnotation": {
2124                    "type": "TSNumberKeyword",
2125                    "loc": {
2126                      "start": {
2127                        "line": 26,
2128                        "column": 41,
2129                        "program": "test-func-param.ts"
2130                      },
2131                      "end": {
2132                        "line": 26,
2133                        "column": 47,
2134                        "program": "test-func-param.ts"
2135                      }
2136                    }
2137                  },
2138                  "loc": {
2139                    "start": {
2140                      "line": 26,
2141                      "column": 38,
2142                      "program": "test-func-param.ts"
2143                    },
2144                    "end": {
2145                      "line": 26,
2146                      "column": 48,
2147                      "program": "test-func-param.ts"
2148                    }
2149                  }
2150                },
2151                {
2152                  "type": "TSPropertySignature",
2153                  "computed": false,
2154                  "optional": false,
2155                  "readonly": false,
2156                  "key": {
2157                    "type": "Identifier",
2158                    "name": "b",
2159                    "decorators": [],
2160                    "loc": {
2161                      "start": {
2162                        "line": 26,
2163                        "column": 49,
2164                        "program": "test-func-param.ts"
2165                      },
2166                      "end": {
2167                        "line": 26,
2168                        "column": 50,
2169                        "program": "test-func-param.ts"
2170                      }
2171                    }
2172                  },
2173                  "typeAnnotation": {
2174                    "type": "TSNumberKeyword",
2175                    "loc": {
2176                      "start": {
2177                        "line": 26,
2178                        "column": 52,
2179                        "program": "test-func-param.ts"
2180                      },
2181                      "end": {
2182                        "line": 26,
2183                        "column": 58,
2184                        "program": "test-func-param.ts"
2185                      }
2186                    }
2187                  },
2188                  "loc": {
2189                    "start": {
2190                      "line": 26,
2191                      "column": 49,
2192                      "program": "test-func-param.ts"
2193                    },
2194                    "end": {
2195                      "line": 26,
2196                      "column": 60,
2197                      "program": "test-func-param.ts"
2198                    }
2199                  }
2200                }
2201              ],
2202              "loc": {
2203                "start": {
2204                  "line": 26,
2205                  "column": 36,
2206                  "program": "test-func-param.ts"
2207                },
2208                "end": {
2209                  "line": 26,
2210                  "column": 60,
2211                  "program": "test-func-param.ts"
2212                }
2213              }
2214            },
2215            "optional": true,
2216            "loc": {
2217              "start": {
2218                "line": 26,
2219                "column": 25,
2220                "program": "test-func-param.ts"
2221              },
2222              "end": {
2223                "line": 26,
2224                "column": 33,
2225                "program": "test-func-param.ts"
2226              }
2227            }
2228          }
2229        ],
2230        "loc": {
2231          "start": {
2232            "line": 26,
2233            "column": 9,
2234            "program": "test-func-param.ts"
2235          },
2236          "end": {
2237            "line": 28,
2238            "column": 10,
2239            "program": "test-func-param.ts"
2240          }
2241        }
2242      },
2243      "loc": {
2244        "start": {
2245          "line": 26,
2246          "column": 9,
2247          "program": "test-func-param.ts"
2248        },
2249        "end": {
2250          "line": 28,
2251          "column": 10,
2252          "program": "test-func-param.ts"
2253        }
2254      }
2255    },
2256    {
2257      "type": "TSInterfaceDeclaration",
2258      "body": {
2259        "type": "TSInterfaceBody",
2260        "body": [
2261          {
2262            "type": "TSCallSignatureDeclaration",
2263            "params": [
2264              {
2265                "type": "Identifier",
2266                "name": "a",
2267                "typeAnnotation": {
2268                  "type": "TSNumberKeyword",
2269                  "loc": {
2270                    "start": {
2271                      "line": 29,
2272                      "column": 9,
2273                      "program": "test-func-param.ts"
2274                    },
2275                    "end": {
2276                      "line": 29,
2277                      "column": 15,
2278                      "program": "test-func-param.ts"
2279                    }
2280                  }
2281                },
2282                "decorators": [],
2283                "loc": {
2284                  "start": {
2285                    "line": 29,
2286                    "column": 6,
2287                    "program": "test-func-param.ts"
2288                  },
2289                  "end": {
2290                    "line": 29,
2291                    "column": 7,
2292                    "program": "test-func-param.ts"
2293                  }
2294                }
2295              },
2296              {
2297                "type": "ObjectPattern",
2298                "properties": [
2299                  {
2300                    "type": "Property",
2301                    "method": false,
2302                    "shorthand": true,
2303                    "computed": false,
2304                    "key": {
2305                      "type": "Identifier",
2306                      "name": "b",
2307                      "decorators": [],
2308                      "loc": {
2309                        "start": {
2310                          "line": 29,
2311                          "column": 19,
2312                          "program": "test-func-param.ts"
2313                        },
2314                        "end": {
2315                          "line": 29,
2316                          "column": 20,
2317                          "program": "test-func-param.ts"
2318                        }
2319                      }
2320                    },
2321                    "value": {
2322                      "type": "Identifier",
2323                      "name": "b",
2324                      "decorators": [],
2325                      "loc": {
2326                        "start": {
2327                          "line": 29,
2328                          "column": 19,
2329                          "program": "test-func-param.ts"
2330                        },
2331                        "end": {
2332                          "line": 29,
2333                          "column": 20,
2334                          "program": "test-func-param.ts"
2335                        }
2336                      }
2337                    },
2338                    "kind": "init",
2339                    "loc": {
2340                      "start": {
2341                        "line": 29,
2342                        "column": 19,
2343                        "program": "test-func-param.ts"
2344                      },
2345                      "end": {
2346                        "line": 29,
2347                        "column": 20,
2348                        "program": "test-func-param.ts"
2349                      }
2350                    }
2351                  },
2352                  {
2353                    "type": "Property",
2354                    "method": false,
2355                    "shorthand": true,
2356                    "computed": false,
2357                    "key": {
2358                      "type": "Identifier",
2359                      "name": "c",
2360                      "decorators": [],
2361                      "loc": {
2362                        "start": {
2363                          "line": 29,
2364                          "column": 22,
2365                          "program": "test-func-param.ts"
2366                        },
2367                        "end": {
2368                          "line": 29,
2369                          "column": 23,
2370                          "program": "test-func-param.ts"
2371                        }
2372                      }
2373                    },
2374                    "value": {
2375                      "type": "Identifier",
2376                      "name": "c",
2377                      "decorators": [],
2378                      "loc": {
2379                        "start": {
2380                          "line": 29,
2381                          "column": 22,
2382                          "program": "test-func-param.ts"
2383                        },
2384                        "end": {
2385                          "line": 29,
2386                          "column": 23,
2387                          "program": "test-func-param.ts"
2388                        }
2389                      }
2390                    },
2391                    "kind": "init",
2392                    "loc": {
2393                      "start": {
2394                        "line": 29,
2395                        "column": 22,
2396                        "program": "test-func-param.ts"
2397                      },
2398                      "end": {
2399                        "line": 29,
2400                        "column": 23,
2401                        "program": "test-func-param.ts"
2402                      }
2403                    }
2404                  }
2405                ],
2406                "typeAnnotation": {
2407                  "type": "TSTypeLiteral",
2408                  "members": [
2409                    {
2410                      "type": "TSPropertySignature",
2411                      "computed": false,
2412                      "optional": true,
2413                      "readonly": false,
2414                      "key": {
2415                        "type": "Identifier",
2416                        "name": "b",
2417                        "decorators": [],
2418                        "loc": {
2419                          "start": {
2420                            "line": 30,
2421                            "column": 9,
2422                            "program": "test-func-param.ts"
2423                          },
2424                          "end": {
2425                            "line": 30,
2426                            "column": 10,
2427                            "program": "test-func-param.ts"
2428                          }
2429                        }
2430                      },
2431                      "typeAnnotation": {
2432                        "type": "TSBooleanKeyword",
2433                        "loc": {
2434                          "start": {
2435                            "line": 30,
2436                            "column": 13,
2437                            "program": "test-func-param.ts"
2438                          },
2439                          "end": {
2440                            "line": 30,
2441                            "column": 20,
2442                            "program": "test-func-param.ts"
2443                          }
2444                        }
2445                      },
2446                      "loc": {
2447                        "start": {
2448                          "line": 30,
2449                          "column": 9,
2450                          "program": "test-func-param.ts"
2451                        },
2452                        "end": {
2453                          "line": 30,
2454                          "column": 21,
2455                          "program": "test-func-param.ts"
2456                        }
2457                      }
2458                    },
2459                    {
2460                      "type": "TSPropertySignature",
2461                      "computed": false,
2462                      "optional": true,
2463                      "readonly": false,
2464                      "key": {
2465                        "type": "Identifier",
2466                        "name": "c",
2467                        "decorators": [],
2468                        "loc": {
2469                          "start": {
2470                            "line": 31,
2471                            "column": 9,
2472                            "program": "test-func-param.ts"
2473                          },
2474                          "end": {
2475                            "line": 31,
2476                            "column": 10,
2477                            "program": "test-func-param.ts"
2478                          }
2479                        }
2480                      },
2481                      "typeAnnotation": {
2482                        "type": "TSAnyKeyword",
2483                        "loc": {
2484                          "start": {
2485                            "line": 31,
2486                            "column": 13,
2487                            "program": "test-func-param.ts"
2488                          },
2489                          "end": {
2490                            "line": 31,
2491                            "column": 16,
2492                            "program": "test-func-param.ts"
2493                          }
2494                        }
2495                      },
2496                      "loc": {
2497                        "start": {
2498                          "line": 31,
2499                          "column": 9,
2500                          "program": "test-func-param.ts"
2501                        },
2502                        "end": {
2503                          "line": 31,
2504                          "column": 17,
2505                          "program": "test-func-param.ts"
2506                        }
2507                      }
2508                    }
2509                  ],
2510                  "loc": {
2511                    "start": {
2512                      "line": 29,
2513                      "column": 28,
2514                      "program": "test-func-param.ts"
2515                    },
2516                    "end": {
2517                      "line": 32,
2518                      "column": 6,
2519                      "program": "test-func-param.ts"
2520                    }
2521                  }
2522                },
2523                "optional": true,
2524                "loc": {
2525                  "start": {
2526                    "line": 29,
2527                    "column": 17,
2528                    "program": "test-func-param.ts"
2529                  },
2530                  "end": {
2531                    "line": 29,
2532                    "column": 25,
2533                    "program": "test-func-param.ts"
2534                  }
2535                }
2536              }
2537            ],
2538            "returnType": {
2539              "type": "TSStringKeyword",
2540              "loc": {
2541                "start": {
2542                  "line": 32,
2543                  "column": 9,
2544                  "program": "test-func-param.ts"
2545                },
2546                "end": {
2547                  "line": 32,
2548                  "column": 15,
2549                  "program": "test-func-param.ts"
2550                }
2551              }
2552            },
2553            "loc": {
2554              "start": {
2555                "line": 29,
2556                "column": 5,
2557                "program": "test-func-param.ts"
2558              },
2559              "end": {
2560                "line": 32,
2561                "column": 16,
2562                "program": "test-func-param.ts"
2563              }
2564            }
2565          }
2566        ],
2567        "loc": {
2568          "start": {
2569            "line": 28,
2570            "column": 22,
2571            "program": "test-func-param.ts"
2572          },
2573          "end": {
2574            "line": 33,
2575            "column": 2,
2576            "program": "test-func-param.ts"
2577          }
2578        }
2579      },
2580      "id": {
2581        "type": "Identifier",
2582        "name": "Interface1",
2583        "decorators": [],
2584        "loc": {
2585          "start": {
2586            "line": 28,
2587            "column": 11,
2588            "program": "test-func-param.ts"
2589          },
2590          "end": {
2591            "line": 28,
2592            "column": 21,
2593            "program": "test-func-param.ts"
2594          }
2595        }
2596      },
2597      "extends": [],
2598      "loc": {
2599        "start": {
2600          "line": 28,
2601          "column": 1,
2602          "program": "test-func-param.ts"
2603        },
2604        "end": {
2605          "line": 33,
2606          "column": 2,
2607          "program": "test-func-param.ts"
2608        }
2609      }
2610    }
2611  ],
2612  "loc": {
2613    "start": {
2614      "line": 1,
2615      "column": 1,
2616      "program": "test-func-param.ts"
2617    },
2618    "end": {
2619      "line": 33,
2620      "column": 2,
2621      "program": "test-func-param.ts"
2622    }
2623  }
2624}
2625