• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "A",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 17,
14              "column": 7,
15              "program": "test-class-definition.js"
16            },
17            "end": {
18              "line": 17,
19              "column": 8,
20              "program": "test-class-definition.js"
21            }
22          }
23        },
24        "superClass": null,
25        "implements": [],
26        "constructor": {
27          "type": "MethodDefinition",
28          "key": {
29            "type": "Identifier",
30            "name": "constructor",
31            "decorators": [],
32            "loc": {
33              "start": {
34                "line": 24,
35                "column": 3,
36                "program": "test-class-definition.js"
37              },
38              "end": {
39                "line": 24,
40                "column": 14,
41                "program": "test-class-definition.js"
42              }
43            }
44          },
45          "kind": "constructor",
46          "static": false,
47          "optional": false,
48          "computed": false,
49          "value": {
50            "type": "FunctionExpression",
51            "function": {
52              "type": "ScriptFunction",
53              "id": null,
54              "generator": false,
55              "async": false,
56              "expression": false,
57              "params": [
58                {
59                  "type": "Identifier",
60                  "name": "a",
61                  "decorators": [],
62                  "loc": {
63                    "start": {
64                      "line": 24,
65                      "column": 15,
66                      "program": "test-class-definition.js"
67                    },
68                    "end": {
69                      "line": 24,
70                      "column": 16,
71                      "program": "test-class-definition.js"
72                    }
73                  }
74                },
75                {
76                  "type": "Identifier",
77                  "name": "b",
78                  "decorators": [],
79                  "loc": {
80                    "start": {
81                      "line": 24,
82                      "column": 18,
83                      "program": "test-class-definition.js"
84                    },
85                    "end": {
86                      "line": 24,
87                      "column": 19,
88                      "program": "test-class-definition.js"
89                    }
90                  }
91                },
92                {
93                  "type": "Identifier",
94                  "name": "c",
95                  "decorators": [],
96                  "loc": {
97                    "start": {
98                      "line": 24,
99                      "column": 21,
100                      "program": "test-class-definition.js"
101                    },
102                    "end": {
103                      "line": 24,
104                      "column": 22,
105                      "program": "test-class-definition.js"
106                    }
107                  }
108                }
109              ],
110              "body": {
111                "type": "BlockStatement",
112                "statements": [],
113                "loc": {
114                  "start": {
115                    "line": 25,
116                    "column": 3,
117                    "program": "test-class-definition.js"
118                  },
119                  "end": {
120                    "line": 26,
121                    "column": 4,
122                    "program": "test-class-definition.js"
123                  }
124                }
125              },
126              "loc": {
127                "start": {
128                  "line": 24,
129                  "column": 14,
130                  "program": "test-class-definition.js"
131                },
132                "end": {
133                  "line": 26,
134                  "column": 4,
135                  "program": "test-class-definition.js"
136                }
137              }
138            },
139            "loc": {
140              "start": {
141                "line": 24,
142                "column": 14,
143                "program": "test-class-definition.js"
144              },
145              "end": {
146                "line": 26,
147                "column": 4,
148                "program": "test-class-definition.js"
149              }
150            }
151          },
152          "overloads": [],
153          "decorators": [],
154          "loc": {
155            "start": {
156              "line": 24,
157              "column": 3,
158              "program": "test-class-definition.js"
159            },
160            "end": {
161              "line": 26,
162              "column": 4,
163              "program": "test-class-definition.js"
164            }
165          }
166        },
167        "body": [
168          {
169            "type": "MethodDefinition",
170            "key": {
171              "type": "Identifier",
172              "name": "myStaticFunc",
173              "decorators": [],
174              "loc": {
175                "start": {
176                  "line": 18,
177                  "column": 10,
178                  "program": "test-class-definition.js"
179                },
180                "end": {
181                  "line": 18,
182                  "column": 22,
183                  "program": "test-class-definition.js"
184                }
185              }
186            },
187            "kind": "method",
188            "static": true,
189            "optional": false,
190            "computed": false,
191            "value": {
192              "type": "FunctionExpression",
193              "function": {
194                "type": "ScriptFunction",
195                "id": null,
196                "generator": false,
197                "async": false,
198                "expression": false,
199                "params": [
200                  {
201                    "type": "Identifier",
202                    "name": "a",
203                    "decorators": [],
204                    "loc": {
205                      "start": {
206                        "line": 18,
207                        "column": 23,
208                        "program": "test-class-definition.js"
209                      },
210                      "end": {
211                        "line": 18,
212                        "column": 24,
213                        "program": "test-class-definition.js"
214                      }
215                    }
216                  },
217                  {
218                    "type": "Identifier",
219                    "name": "b",
220                    "decorators": [],
221                    "loc": {
222                      "start": {
223                        "line": 18,
224                        "column": 26,
225                        "program": "test-class-definition.js"
226                      },
227                      "end": {
228                        "line": 18,
229                        "column": 27,
230                        "program": "test-class-definition.js"
231                      }
232                    }
233                  },
234                  {
235                    "type": "Identifier",
236                    "name": "c",
237                    "decorators": [],
238                    "loc": {
239                      "start": {
240                        "line": 18,
241                        "column": 29,
242                        "program": "test-class-definition.js"
243                      },
244                      "end": {
245                        "line": 18,
246                        "column": 30,
247                        "program": "test-class-definition.js"
248                      }
249                    }
250                  }
251                ],
252                "body": {
253                  "type": "BlockStatement",
254                  "statements": [],
255                  "loc": {
256                    "start": {
257                      "line": 18,
258                      "column": 32,
259                      "program": "test-class-definition.js"
260                    },
261                    "end": {
262                      "line": 18,
263                      "column": 34,
264                      "program": "test-class-definition.js"
265                    }
266                  }
267                },
268                "loc": {
269                  "start": {
270                    "line": 18,
271                    "column": 22,
272                    "program": "test-class-definition.js"
273                  },
274                  "end": {
275                    "line": 18,
276                    "column": 34,
277                    "program": "test-class-definition.js"
278                  }
279                }
280              },
281              "loc": {
282                "start": {
283                  "line": 18,
284                  "column": 22,
285                  "program": "test-class-definition.js"
286                },
287                "end": {
288                  "line": 18,
289                  "column": 34,
290                  "program": "test-class-definition.js"
291                }
292              }
293            },
294            "overloads": [],
295            "decorators": [],
296            "loc": {
297              "start": {
298                "line": 18,
299                "column": 3,
300                "program": "test-class-definition.js"
301              },
302              "end": {
303                "line": 18,
304                "column": 34,
305                "program": "test-class-definition.js"
306              }
307            }
308          },
309          {
310            "type": "MethodDefinition",
311            "key": {
312              "type": "Identifier",
313              "name": "myFunc",
314              "decorators": [],
315              "loc": {
316                "start": {
317                  "line": 20,
318                  "column": 3,
319                  "program": "test-class-definition.js"
320                },
321                "end": {
322                  "line": 20,
323                  "column": 9,
324                  "program": "test-class-definition.js"
325                }
326              }
327            },
328            "kind": "method",
329            "static": false,
330            "optional": false,
331            "computed": false,
332            "value": {
333              "type": "FunctionExpression",
334              "function": {
335                "type": "ScriptFunction",
336                "id": null,
337                "generator": false,
338                "async": false,
339                "expression": false,
340                "params": [],
341                "body": {
342                  "type": "BlockStatement",
343                  "statements": [],
344                  "loc": {
345                    "start": {
346                      "line": 20,
347                      "column": 12,
348                      "program": "test-class-definition.js"
349                    },
350                    "end": {
351                      "line": 22,
352                      "column": 4,
353                      "program": "test-class-definition.js"
354                    }
355                  }
356                },
357                "loc": {
358                  "start": {
359                    "line": 20,
360                    "column": 9,
361                    "program": "test-class-definition.js"
362                  },
363                  "end": {
364                    "line": 22,
365                    "column": 4,
366                    "program": "test-class-definition.js"
367                  }
368                }
369              },
370              "loc": {
371                "start": {
372                  "line": 20,
373                  "column": 9,
374                  "program": "test-class-definition.js"
375                },
376                "end": {
377                  "line": 22,
378                  "column": 4,
379                  "program": "test-class-definition.js"
380                }
381              }
382            },
383            "overloads": [],
384            "decorators": [],
385            "loc": {
386              "start": {
387                "line": 20,
388                "column": 3,
389                "program": "test-class-definition.js"
390              },
391              "end": {
392                "line": 22,
393                "column": 4,
394                "program": "test-class-definition.js"
395              }
396            }
397          }
398        ],
399        "loc": {
400          "start": {
401            "line": 17,
402            "column": 9,
403            "program": "test-class-definition.js"
404          },
405          "end": {
406            "line": 29,
407            "column": 6,
408            "program": "test-class-definition.js"
409          }
410        }
411      },
412      "loc": {
413        "start": {
414          "line": 17,
415          "column": 1,
416          "program": "test-class-definition.js"
417        },
418        "end": {
419          "line": 29,
420          "column": 6,
421          "program": "test-class-definition.js"
422        }
423      }
424    },
425    {
426      "type": "ClassDeclaration",
427      "definition": {
428        "id": {
429          "type": "Identifier",
430          "name": "B",
431          "decorators": [],
432          "loc": {
433            "start": {
434              "line": 29,
435              "column": 7,
436              "program": "test-class-definition.js"
437            },
438            "end": {
439              "line": 29,
440              "column": 8,
441              "program": "test-class-definition.js"
442            }
443          }
444        },
445        "superClass": null,
446        "implements": [],
447        "constructor": {
448          "type": "MethodDefinition",
449          "key": {
450            "type": "Identifier",
451            "name": "constructor",
452            "decorators": [],
453            "loc": {
454              "start": {
455                "line": 34,
456                "column": 3,
457                "program": "test-class-definition.js"
458              },
459              "end": {
460                "line": 34,
461                "column": 14,
462                "program": "test-class-definition.js"
463              }
464            }
465          },
466          "kind": "constructor",
467          "static": false,
468          "optional": false,
469          "computed": false,
470          "value": {
471            "type": "FunctionExpression",
472            "function": {
473              "type": "ScriptFunction",
474              "id": null,
475              "generator": false,
476              "async": false,
477              "expression": false,
478              "params": [],
479              "body": {
480                "type": "BlockStatement",
481                "statements": [],
482                "loc": {
483                  "start": {
484                    "line": 34,
485                    "column": 16,
486                    "program": "test-class-definition.js"
487                  },
488                  "end": {
489                    "line": 34,
490                    "column": 18,
491                    "program": "test-class-definition.js"
492                  }
493                }
494              },
495              "loc": {
496                "start": {
497                  "line": 34,
498                  "column": 14,
499                  "program": "test-class-definition.js"
500                },
501                "end": {
502                  "line": 34,
503                  "column": 18,
504                  "program": "test-class-definition.js"
505                }
506              }
507            },
508            "loc": {
509              "start": {
510                "line": 34,
511                "column": 14,
512                "program": "test-class-definition.js"
513              },
514              "end": {
515                "line": 34,
516                "column": 18,
517                "program": "test-class-definition.js"
518              }
519            }
520          },
521          "overloads": [],
522          "decorators": [],
523          "loc": {
524            "start": {
525              "line": 34,
526              "column": 3,
527              "program": "test-class-definition.js"
528            },
529            "end": {
530              "line": 34,
531              "column": 18,
532              "program": "test-class-definition.js"
533            }
534          }
535        },
536        "body": [
537          {
538            "type": "MethodDefinition",
539            "key": {
540              "type": "Identifier",
541              "name": "static",
542              "decorators": [],
543              "loc": {
544                "start": {
545                  "line": 30,
546                  "column": 16,
547                  "program": "test-class-definition.js"
548                },
549                "end": {
550                  "line": 30,
551                  "column": 22,
552                  "program": "test-class-definition.js"
553                }
554              }
555            },
556            "kind": "method",
557            "static": true,
558            "optional": false,
559            "computed": false,
560            "value": {
561              "type": "FunctionExpression",
562              "function": {
563                "type": "ScriptFunction",
564                "id": null,
565                "generator": false,
566                "async": true,
567                "expression": false,
568                "params": [],
569                "body": {
570                  "type": "BlockStatement",
571                  "statements": [],
572                  "loc": {
573                    "start": {
574                      "line": 30,
575                      "column": 24,
576                      "program": "test-class-definition.js"
577                    },
578                    "end": {
579                      "line": 30,
580                      "column": 26,
581                      "program": "test-class-definition.js"
582                    }
583                  }
584                },
585                "loc": {
586                  "start": {
587                    "line": 30,
588                    "column": 22,
589                    "program": "test-class-definition.js"
590                  },
591                  "end": {
592                    "line": 30,
593                    "column": 26,
594                    "program": "test-class-definition.js"
595                  }
596                }
597              },
598              "loc": {
599                "start": {
600                  "line": 30,
601                  "column": 22,
602                  "program": "test-class-definition.js"
603                },
604                "end": {
605                  "line": 30,
606                  "column": 26,
607                  "program": "test-class-definition.js"
608                }
609              }
610            },
611            "overloads": [],
612            "decorators": [],
613            "loc": {
614              "start": {
615                "line": 30,
616                "column": 3,
617                "program": "test-class-definition.js"
618              },
619              "end": {
620                "line": 30,
621                "column": 26,
622                "program": "test-class-definition.js"
623              }
624            }
625          },
626          {
627            "type": "MethodDefinition",
628            "key": {
629              "type": "Identifier",
630              "name": "a",
631              "decorators": [],
632              "loc": {
633                "start": {
634                  "line": 31,
635                  "column": 15,
636                  "program": "test-class-definition.js"
637                },
638                "end": {
639                  "line": 31,
640                  "column": 16,
641                  "program": "test-class-definition.js"
642                }
643              }
644            },
645            "kind": "get",
646            "static": true,
647            "optional": false,
648            "computed": true,
649            "value": {
650              "type": "FunctionExpression",
651              "function": {
652                "type": "ScriptFunction",
653                "id": null,
654                "generator": false,
655                "async": false,
656                "expression": false,
657                "params": [],
658                "body": {
659                  "type": "BlockStatement",
660                  "statements": [],
661                  "loc": {
662                    "start": {
663                      "line": 31,
664                      "column": 19,
665                      "program": "test-class-definition.js"
666                    },
667                    "end": {
668                      "line": 31,
669                      "column": 21,
670                      "program": "test-class-definition.js"
671                    }
672                  }
673                },
674                "loc": {
675                  "start": {
676                    "line": 31,
677                    "column": 17,
678                    "program": "test-class-definition.js"
679                  },
680                  "end": {
681                    "line": 31,
682                    "column": 21,
683                    "program": "test-class-definition.js"
684                  }
685                }
686              },
687              "loc": {
688                "start": {
689                  "line": 31,
690                  "column": 17,
691                  "program": "test-class-definition.js"
692                },
693                "end": {
694                  "line": 31,
695                  "column": 21,
696                  "program": "test-class-definition.js"
697                }
698              }
699            },
700            "overloads": [],
701            "decorators": [],
702            "loc": {
703              "start": {
704                "line": 31,
705                "column": 3,
706                "program": "test-class-definition.js"
707              },
708              "end": {
709                "line": 31,
710                "column": 21,
711                "program": "test-class-definition.js"
712              }
713            }
714          },
715          {
716            "type": "MethodDefinition",
717            "key": {
718              "type": "Identifier",
719              "name": "get",
720              "decorators": [],
721              "loc": {
722                "start": {
723                  "line": 32,
724                  "column": 16,
725                  "program": "test-class-definition.js"
726                },
727                "end": {
728                  "line": 32,
729                  "column": 19,
730                  "program": "test-class-definition.js"
731                }
732              }
733            },
734            "kind": "method",
735            "static": true,
736            "optional": false,
737            "computed": false,
738            "value": {
739              "type": "FunctionExpression",
740              "function": {
741                "type": "ScriptFunction",
742                "id": null,
743                "generator": false,
744                "async": true,
745                "expression": false,
746                "params": [],
747                "body": {
748                  "type": "BlockStatement",
749                  "statements": [],
750                  "loc": {
751                    "start": {
752                      "line": 32,
753                      "column": 21,
754                      "program": "test-class-definition.js"
755                    },
756                    "end": {
757                      "line": 32,
758                      "column": 23,
759                      "program": "test-class-definition.js"
760                    }
761                  }
762                },
763                "loc": {
764                  "start": {
765                    "line": 32,
766                    "column": 19,
767                    "program": "test-class-definition.js"
768                  },
769                  "end": {
770                    "line": 32,
771                    "column": 23,
772                    "program": "test-class-definition.js"
773                  }
774                }
775              },
776              "loc": {
777                "start": {
778                  "line": 32,
779                  "column": 19,
780                  "program": "test-class-definition.js"
781                },
782                "end": {
783                  "line": 32,
784                  "column": 23,
785                  "program": "test-class-definition.js"
786                }
787              }
788            },
789            "overloads": [],
790            "decorators": [],
791            "loc": {
792              "start": {
793                "line": 32,
794                "column": 3,
795                "program": "test-class-definition.js"
796              },
797              "end": {
798                "line": 32,
799                "column": 23,
800                "program": "test-class-definition.js"
801              }
802            }
803          },
804          {
805            "type": "MethodDefinition",
806            "key": {
807              "type": "Identifier",
808              "name": "constructor",
809              "decorators": [],
810              "loc": {
811                "start": {
812                  "line": 33,
813                  "column": 10,
814                  "program": "test-class-definition.js"
815                },
816                "end": {
817                  "line": 33,
818                  "column": 21,
819                  "program": "test-class-definition.js"
820                }
821              }
822            },
823            "kind": "method",
824            "static": true,
825            "optional": false,
826            "computed": false,
827            "value": {
828              "type": "FunctionExpression",
829              "function": {
830                "type": "ScriptFunction",
831                "id": null,
832                "generator": false,
833                "async": false,
834                "expression": false,
835                "params": [],
836                "body": {
837                  "type": "BlockStatement",
838                  "statements": [],
839                  "loc": {
840                    "start": {
841                      "line": 33,
842                      "column": 23,
843                      "program": "test-class-definition.js"
844                    },
845                    "end": {
846                      "line": 33,
847                      "column": 25,
848                      "program": "test-class-definition.js"
849                    }
850                  }
851                },
852                "loc": {
853                  "start": {
854                    "line": 33,
855                    "column": 21,
856                    "program": "test-class-definition.js"
857                  },
858                  "end": {
859                    "line": 33,
860                    "column": 25,
861                    "program": "test-class-definition.js"
862                  }
863                }
864              },
865              "loc": {
866                "start": {
867                  "line": 33,
868                  "column": 21,
869                  "program": "test-class-definition.js"
870                },
871                "end": {
872                  "line": 33,
873                  "column": 25,
874                  "program": "test-class-definition.js"
875                }
876              }
877            },
878            "overloads": [],
879            "decorators": [],
880            "loc": {
881              "start": {
882                "line": 33,
883                "column": 3,
884                "program": "test-class-definition.js"
885              },
886              "end": {
887                "line": 33,
888                "column": 25,
889                "program": "test-class-definition.js"
890              }
891            }
892          },
893          {
894            "type": "MethodDefinition",
895            "key": {
896              "type": "NumberLiteral",
897              "value": 5,
898              "loc": {
899                "start": {
900                  "line": 35,
901                  "column": 8,
902                  "program": "test-class-definition.js"
903                },
904                "end": {
905                  "line": 35,
906                  "column": 9,
907                  "program": "test-class-definition.js"
908                }
909              }
910            },
911            "kind": "set",
912            "static": false,
913            "optional": false,
914            "computed": true,
915            "value": {
916              "type": "FunctionExpression",
917              "function": {
918                "type": "ScriptFunction",
919                "id": null,
920                "generator": false,
921                "async": false,
922                "expression": false,
923                "params": [
924                  {
925                    "type": "Identifier",
926                    "name": "a",
927                    "decorators": [],
928                    "loc": {
929                      "start": {
930                        "line": 35,
931                        "column": 11,
932                        "program": "test-class-definition.js"
933                      },
934                      "end": {
935                        "line": 35,
936                        "column": 12,
937                        "program": "test-class-definition.js"
938                      }
939                    }
940                  }
941                ],
942                "body": {
943                  "type": "BlockStatement",
944                  "statements": [],
945                  "loc": {
946                    "start": {
947                      "line": 35,
948                      "column": 13,
949                      "program": "test-class-definition.js"
950                    },
951                    "end": {
952                      "line": 35,
953                      "column": 15,
954                      "program": "test-class-definition.js"
955                    }
956                  }
957                },
958                "loc": {
959                  "start": {
960                    "line": 35,
961                    "column": 10,
962                    "program": "test-class-definition.js"
963                  },
964                  "end": {
965                    "line": 35,
966                    "column": 15,
967                    "program": "test-class-definition.js"
968                  }
969                }
970              },
971              "loc": {
972                "start": {
973                  "line": 35,
974                  "column": 10,
975                  "program": "test-class-definition.js"
976                },
977                "end": {
978                  "line": 35,
979                  "column": 15,
980                  "program": "test-class-definition.js"
981                }
982              }
983            },
984            "overloads": [],
985            "decorators": [],
986            "loc": {
987              "start": {
988                "line": 35,
989                "column": 3,
990                "program": "test-class-definition.js"
991              },
992              "end": {
993                "line": 35,
994                "column": 15,
995                "program": "test-class-definition.js"
996              }
997            }
998          },
999          {
1000            "type": "MethodDefinition",
1001            "key": {
1002              "type": "StringLiteral",
1003              "value": "foo",
1004              "loc": {
1005                "start": {
1006                  "line": 36,
1007                  "column": 7,
1008                  "program": "test-class-definition.js"
1009                },
1010                "end": {
1011                  "line": 36,
1012                  "column": 12,
1013                  "program": "test-class-definition.js"
1014                }
1015              }
1016            },
1017            "kind": "get",
1018            "static": false,
1019            "optional": false,
1020            "computed": false,
1021            "value": {
1022              "type": "FunctionExpression",
1023              "function": {
1024                "type": "ScriptFunction",
1025                "id": null,
1026                "generator": false,
1027                "async": false,
1028                "expression": false,
1029                "params": [],
1030                "body": {
1031                  "type": "BlockStatement",
1032                  "statements": [],
1033                  "loc": {
1034                    "start": {
1035                      "line": 36,
1036                      "column": 14,
1037                      "program": "test-class-definition.js"
1038                    },
1039                    "end": {
1040                      "line": 36,
1041                      "column": 16,
1042                      "program": "test-class-definition.js"
1043                    }
1044                  }
1045                },
1046                "loc": {
1047                  "start": {
1048                    "line": 36,
1049                    "column": 12,
1050                    "program": "test-class-definition.js"
1051                  },
1052                  "end": {
1053                    "line": 36,
1054                    "column": 16,
1055                    "program": "test-class-definition.js"
1056                  }
1057                }
1058              },
1059              "loc": {
1060                "start": {
1061                  "line": 36,
1062                  "column": 12,
1063                  "program": "test-class-definition.js"
1064                },
1065                "end": {
1066                  "line": 36,
1067                  "column": 16,
1068                  "program": "test-class-definition.js"
1069                }
1070              }
1071            },
1072            "overloads": [],
1073            "decorators": [],
1074            "loc": {
1075              "start": {
1076                "line": 36,
1077                "column": 3,
1078                "program": "test-class-definition.js"
1079              },
1080              "end": {
1081                "line": 36,
1082                "column": 16,
1083                "program": "test-class-definition.js"
1084              }
1085            }
1086          },
1087          {
1088            "type": "MethodDefinition",
1089            "key": {
1090              "type": "Identifier",
1091              "name": "a",
1092              "decorators": [],
1093              "loc": {
1094                "start": {
1095                  "line": 37,
1096                  "column": 4,
1097                  "program": "test-class-definition.js"
1098                },
1099                "end": {
1100                  "line": 37,
1101                  "column": 5,
1102                  "program": "test-class-definition.js"
1103                }
1104              }
1105            },
1106            "kind": "method",
1107            "static": false,
1108            "optional": false,
1109            "computed": false,
1110            "value": {
1111              "type": "FunctionExpression",
1112              "function": {
1113                "type": "ScriptFunction",
1114                "id": null,
1115                "generator": true,
1116                "async": false,
1117                "expression": false,
1118                "params": [],
1119                "body": {
1120                  "type": "BlockStatement",
1121                  "statements": [],
1122                  "loc": {
1123                    "start": {
1124                      "line": 37,
1125                      "column": 7,
1126                      "program": "test-class-definition.js"
1127                    },
1128                    "end": {
1129                      "line": 37,
1130                      "column": 9,
1131                      "program": "test-class-definition.js"
1132                    }
1133                  }
1134                },
1135                "loc": {
1136                  "start": {
1137                    "line": 37,
1138                    "column": 5,
1139                    "program": "test-class-definition.js"
1140                  },
1141                  "end": {
1142                    "line": 37,
1143                    "column": 9,
1144                    "program": "test-class-definition.js"
1145                  }
1146                }
1147              },
1148              "loc": {
1149                "start": {
1150                  "line": 37,
1151                  "column": 5,
1152                  "program": "test-class-definition.js"
1153                },
1154                "end": {
1155                  "line": 37,
1156                  "column": 9,
1157                  "program": "test-class-definition.js"
1158                }
1159              }
1160            },
1161            "overloads": [],
1162            "decorators": [],
1163            "loc": {
1164              "start": {
1165                "line": 37,
1166                "column": 3,
1167                "program": "test-class-definition.js"
1168              },
1169              "end": {
1170                "line": 37,
1171                "column": 9,
1172                "program": "test-class-definition.js"
1173              }
1174            }
1175          },
1176          {
1177            "type": "MethodDefinition",
1178            "key": {
1179              "type": "Identifier",
1180              "name": "a",
1181              "decorators": [],
1182              "loc": {
1183                "start": {
1184                  "line": 38,
1185                  "column": 10,
1186                  "program": "test-class-definition.js"
1187                },
1188                "end": {
1189                  "line": 38,
1190                  "column": 11,
1191                  "program": "test-class-definition.js"
1192                }
1193              }
1194            },
1195            "kind": "method",
1196            "static": false,
1197            "optional": false,
1198            "computed": false,
1199            "value": {
1200              "type": "FunctionExpression",
1201              "function": {
1202                "type": "ScriptFunction",
1203                "id": null,
1204                "generator": true,
1205                "async": true,
1206                "expression": false,
1207                "params": [],
1208                "body": {
1209                  "type": "BlockStatement",
1210                  "statements": [],
1211                  "loc": {
1212                    "start": {
1213                      "line": 38,
1214                      "column": 13,
1215                      "program": "test-class-definition.js"
1216                    },
1217                    "end": {
1218                      "line": 38,
1219                      "column": 15,
1220                      "program": "test-class-definition.js"
1221                    }
1222                  }
1223                },
1224                "loc": {
1225                  "start": {
1226                    "line": 38,
1227                    "column": 11,
1228                    "program": "test-class-definition.js"
1229                  },
1230                  "end": {
1231                    "line": 38,
1232                    "column": 15,
1233                    "program": "test-class-definition.js"
1234                  }
1235                }
1236              },
1237              "loc": {
1238                "start": {
1239                  "line": 38,
1240                  "column": 11,
1241                  "program": "test-class-definition.js"
1242                },
1243                "end": {
1244                  "line": 38,
1245                  "column": 15,
1246                  "program": "test-class-definition.js"
1247                }
1248              }
1249            },
1250            "overloads": [],
1251            "decorators": [],
1252            "loc": {
1253              "start": {
1254                "line": 38,
1255                "column": 3,
1256                "program": "test-class-definition.js"
1257              },
1258              "end": {
1259                "line": 38,
1260                "column": 15,
1261                "program": "test-class-definition.js"
1262              }
1263            }
1264          },
1265          {
1266            "type": "MethodDefinition",
1267            "key": {
1268              "type": "StringLiteral",
1269              "value": "bar",
1270              "loc": {
1271                "start": {
1272                  "line": 39,
1273                  "column": 5,
1274                  "program": "test-class-definition.js"
1275                },
1276                "end": {
1277                  "line": 39,
1278                  "column": 10,
1279                  "program": "test-class-definition.js"
1280                }
1281              }
1282            },
1283            "kind": "method",
1284            "static": false,
1285            "optional": false,
1286            "computed": true,
1287            "value": {
1288              "type": "FunctionExpression",
1289              "function": {
1290                "type": "ScriptFunction",
1291                "id": null,
1292                "generator": true,
1293                "async": false,
1294                "expression": false,
1295                "params": [],
1296                "body": {
1297                  "type": "BlockStatement",
1298                  "statements": [],
1299                  "loc": {
1300                    "start": {
1301                      "line": 39,
1302                      "column": 13,
1303                      "program": "test-class-definition.js"
1304                    },
1305                    "end": {
1306                      "line": 39,
1307                      "column": 15,
1308                      "program": "test-class-definition.js"
1309                    }
1310                  }
1311                },
1312                "loc": {
1313                  "start": {
1314                    "line": 39,
1315                    "column": 11,
1316                    "program": "test-class-definition.js"
1317                  },
1318                  "end": {
1319                    "line": 39,
1320                    "column": 15,
1321                    "program": "test-class-definition.js"
1322                  }
1323                }
1324              },
1325              "loc": {
1326                "start": {
1327                  "line": 39,
1328                  "column": 11,
1329                  "program": "test-class-definition.js"
1330                },
1331                "end": {
1332                  "line": 39,
1333                  "column": 15,
1334                  "program": "test-class-definition.js"
1335                }
1336              }
1337            },
1338            "overloads": [],
1339            "decorators": [],
1340            "loc": {
1341              "start": {
1342                "line": 39,
1343                "column": 3,
1344                "program": "test-class-definition.js"
1345              },
1346              "end": {
1347                "line": 39,
1348                "column": 15,
1349                "program": "test-class-definition.js"
1350              }
1351            }
1352          },
1353          {
1354            "type": "MethodDefinition",
1355            "key": {
1356              "type": "StringLiteral",
1357              "value": "baz",
1358              "loc": {
1359                "start": {
1360                  "line": 40,
1361                  "column": 12,
1362                  "program": "test-class-definition.js"
1363                },
1364                "end": {
1365                  "line": 40,
1366                  "column": 17,
1367                  "program": "test-class-definition.js"
1368                }
1369              }
1370            },
1371            "kind": "method",
1372            "static": false,
1373            "optional": false,
1374            "computed": true,
1375            "value": {
1376              "type": "FunctionExpression",
1377              "function": {
1378                "type": "ScriptFunction",
1379                "id": null,
1380                "generator": true,
1381                "async": true,
1382                "expression": false,
1383                "params": [],
1384                "body": {
1385                  "type": "BlockStatement",
1386                  "statements": [],
1387                  "loc": {
1388                    "start": {
1389                      "line": 40,
1390                      "column": 20,
1391                      "program": "test-class-definition.js"
1392                    },
1393                    "end": {
1394                      "line": 40,
1395                      "column": 22,
1396                      "program": "test-class-definition.js"
1397                    }
1398                  }
1399                },
1400                "loc": {
1401                  "start": {
1402                    "line": 40,
1403                    "column": 18,
1404                    "program": "test-class-definition.js"
1405                  },
1406                  "end": {
1407                    "line": 40,
1408                    "column": 22,
1409                    "program": "test-class-definition.js"
1410                  }
1411                }
1412              },
1413              "loc": {
1414                "start": {
1415                  "line": 40,
1416                  "column": 18,
1417                  "program": "test-class-definition.js"
1418                },
1419                "end": {
1420                  "line": 40,
1421                  "column": 22,
1422                  "program": "test-class-definition.js"
1423                }
1424              }
1425            },
1426            "overloads": [],
1427            "decorators": [],
1428            "loc": {
1429              "start": {
1430                "line": 40,
1431                "column": 3,
1432                "program": "test-class-definition.js"
1433              },
1434              "end": {
1435                "line": 40,
1436                "column": 22,
1437                "program": "test-class-definition.js"
1438              }
1439            }
1440          }
1441        ],
1442        "loc": {
1443          "start": {
1444            "line": 29,
1445            "column": 9,
1446            "program": "test-class-definition.js"
1447          },
1448          "end": {
1449            "line": 41,
1450            "column": 2,
1451            "program": "test-class-definition.js"
1452          }
1453        }
1454      },
1455      "loc": {
1456        "start": {
1457          "line": 29,
1458          "column": 1,
1459          "program": "test-class-definition.js"
1460        },
1461        "end": {
1462          "line": 41,
1463          "column": 2,
1464          "program": "test-class-definition.js"
1465        }
1466      }
1467    }
1468  ],
1469  "loc": {
1470    "start": {
1471      "line": 1,
1472      "column": 1,
1473      "program": "test-class-definition.js"
1474    },
1475    "end": {
1476      "line": 41,
1477      "column": 2,
1478      "program": "test-class-definition.js"
1479    }
1480  }
1481}
1482