1{
2  "type": "Program",
3  "statements": [
4    {
5      "type": "ClassDeclaration",
6      "definition": {
7        "id": {
8          "type": "Identifier",
9          "name": "Outer",
10          "decorators": [],
11          "loc": {
12            "start": {
13              "line": 1,
14              "column": 7
15            },
16            "end": {
17              "line": 1,
18              "column": 12
19            }
20          }
21        },
22        "superClass": null,
23        "implements": [],
24        "body": [
25          {
26            "type": "ClassDeclaration",
27            "definition": {
28              "id": {
29                "type": "Identifier",
30                "name": "Base",
31                "decorators": [],
32                "loc": {
33                  "start": {
34                    "line": 2,
35                    "column": 16
36                  },
37                  "end": {
38                    "line": 2,
39                    "column": 20
40                  }
41                }
42              },
43              "superClass": null,
44              "implements": [],
45              "body": [
46                {
47                  "type": "MethodDefinition",
48                  "key": {
49                    "type": "Identifier",
50                    "name": "a",
51                    "decorators": [],
52                    "loc": {
53                      "start": {
54                        "line": 3,
55                        "column": 17
56                      },
57                      "end": {
58                        "line": 3,
59                        "column": 18
60                      }
61                    }
62                  },
63                  "kind": "method",
64                  "accessibility": "private",
65                  "static": false,
66                  "optional": false,
67                  "computed": false,
68                  "value": {
69                    "type": "FunctionExpression",
70                    "function": {
71                      "type": "ScriptFunction",
72                      "id": {
73                        "type": "Identifier",
74                        "name": "a",
75                        "decorators": [],
76                        "loc": {
77                          "start": {
78                            "line": 3,
79                            "column": 17
80                          },
81                          "end": {
82                            "line": 3,
83                            "column": 18
84                          }
85                        }
86                      },
87                      "generator": false,
88                      "async": false,
89                      "expression": false,
90                      "params": [],
91                      "returnType": {
92                        "type": "ETSPrimitiveType",
93                        "loc": {
94                          "start": {
95                            "line": 3,
96                            "column": 22
97                          },
98                          "end": {
99                            "line": 3,
100                            "column": 26
101                          }
102                        }
103                      },
104                      "body": {
105                        "type": "BlockStatement",
106                        "statements": [],
107                        "loc": {
108                          "start": {
109                            "line": 3,
110                            "column": 27
111                          },
112                          "end": {
113                            "line": 3,
114                            "column": 29
115                          }
116                        }
117                      },
118                      "loc": {
119                        "start": {
120                          "line": 3,
121                          "column": 18
122                        },
123                        "end": {
124                          "line": 3,
125                          "column": 29
126                        }
127                      }
128                    },
129                    "loc": {
130                      "start": {
131                        "line": 3,
132                        "column": 18
133                      },
134                      "end": {
135                        "line": 3,
136                        "column": 29
137                      }
138                    }
139                  },
140                  "overloads": [],
141                  "decorators": [],
142                  "loc": {
143                    "start": {
144                      "line": 3,
145                      "column": 9
146                    },
147                    "end": {
148                      "line": 3,
149                      "column": 29
150                    }
151                  }
152                },
153                {
154                  "type": "MethodDefinition",
155                  "key": {
156                    "type": "Identifier",
157                    "name": "constructor",
158                    "decorators": [],
159                    "loc": {
160                      "start": {
161                        "line": 1,
162                        "column": 1
163                      },
164                      "end": {
165                        "line": 1,
166                        "column": 1
167                      }
168                    }
169                  },
170                  "kind": "constructor",
171                  "static": false,
172                  "optional": false,
173                  "computed": false,
174                  "value": {
175                    "type": "FunctionExpression",
176                    "function": {
177                      "type": "ScriptFunction",
178                      "id": {
179                        "type": "Identifier",
180                        "name": "constructor",
181                        "decorators": [],
182                        "loc": {
183                          "start": {
184                            "line": 1,
185                            "column": 1
186                          },
187                          "end": {
188                            "line": 1,
189                            "column": 1
190                          }
191                        }
192                      },
193                      "generator": false,
194                      "async": false,
195                      "expression": false,
196                      "params": [],
197                      "body": {
198                        "type": "BlockStatement",
199                        "statements": [],
200                        "loc": {
201                          "start": {
202                            "line": 1,
203                            "column": 1
204                          },
205                          "end": {
206                            "line": 1,
207                            "column": 1
208                          }
209                        }
210                      },
211                      "loc": {
212                        "start": {
213                          "line": 1,
214                          "column": 1
215                        },
216                        "end": {
217                          "line": 1,
218                          "column": 1
219                        }
220                      }
221                    },
222                    "loc": {
223                      "start": {
224                        "line": 1,
225                        "column": 1
226                      },
227                      "end": {
228                        "line": 1,
229                        "column": 1
230                      }
231                    }
232                  },
233                  "overloads": [],
234                  "decorators": [],
235                  "loc": {
236                    "start": {
237                      "line": 4,
238                      "column": 6
239                    },
240                    "end": {
241                      "line": 4,
242                      "column": 6
243                    }
244                  }
245                }
246              ],
247              "loc": {
248                "start": {
249                  "line": 2,
250                  "column": 21
251                },
252                "end": {
253                  "line": 4,
254                  "column": 6
255                }
256              }
257            },
258            "loc": {
259              "start": {
260                "line": 2,
261                "column": 10
262              },
263              "end": {
264                "line": 4,
265                "column": 6
266              }
267            }
268          },
269          {
270            "type": "ClassDeclaration",
271            "definition": {
272              "id": {
273                "type": "Identifier",
274                "name": "Derived",
275                "decorators": [],
276                "loc": {
277                  "start": {
278                    "line": 6,
279                    "column": 11
280                  },
281                  "end": {
282                    "line": 6,
283                    "column": 18
284                  }
285                }
286              },
287              "superClass": {
288                "type": "ETSTypeReference",
289                "part": {
290                  "type": "ETSTypeReferencePart",
291                  "name": {
292                    "type": "Identifier",
293                    "name": "Base",
294                    "decorators": [],
295                    "loc": {
296                      "start": {
297                        "line": 6,
298                        "column": 27
299                      },
300                      "end": {
301                        "line": 6,
302                        "column": 31
303                      }
304                    }
305                  },
306                  "loc": {
307                    "start": {
308                      "line": 6,
309                      "column": 27
310                    },
311                    "end": {
312                      "line": 6,
313                      "column": 33
314                    }
315                  }
316                },
317                "loc": {
318                  "start": {
319                    "line": 6,
320                    "column": 27
321                  },
322                  "end": {
323                    "line": 6,
324                    "column": 33
325                  }
326                }
327              },
328              "implements": [],
329              "body": [
330                {
331                  "type": "MethodDefinition",
332                  "key": {
333                    "type": "Identifier",
334                    "name": "foo",
335                    "decorators": [],
336                    "loc": {
337                      "start": {
338                        "line": 7,
339                        "column": 9
340                      },
341                      "end": {
342                        "line": 7,
343                        "column": 12
344                      }
345                    }
346                  },
347                  "kind": "method",
348                  "static": false,
349                  "optional": false,
350                  "computed": false,
351                  "value": {
352                    "type": "FunctionExpression",
353                    "function": {
354                      "type": "ScriptFunction",
355                      "id": {
356                        "type": "Identifier",
357                        "name": "foo",
358                        "decorators": [],
359                        "loc": {
360                          "start": {
361                            "line": 7,
362                            "column": 9
363                          },
364                          "end": {
365                            "line": 7,
366                            "column": 12
367                          }
368                        }
369                      },
370                      "generator": false,
371                      "async": false,
372                      "expression": false,
373                      "params": [],
374                      "returnType": {
375                        "type": "ETSPrimitiveType",
376                        "loc": {
377                          "start": {
378                            "line": 7,
379                            "column": 16
380                          },
381                          "end": {
382                            "line": 7,
383                            "column": 20
384                          }
385                        }
386                      },
387                      "body": {
388                        "type": "BlockStatement",
389                        "statements": [
390                          {
391                            "type": "VariableDeclaration",
392                            "declarations": [
393                              {
394                                "type": "VariableDeclarator",
395                                "id": {
396                                  "type": "Identifier",
397                                  "name": "base",
398                                  "typeAnnotation": {
399                                    "type": "ETSTypeReference",
400                                    "part": {
401                                      "type": "ETSTypeReferencePart",
402                                      "name": {
403                                        "type": "Identifier",
404                                        "name": "Base",
405                                        "decorators": [],
406                                        "loc": {
407                                          "start": {
408                                            "line": 8,
409                                            "column": 23
410                                          },
411                                          "end": {
412                                            "line": 8,
413                                            "column": 27
414                                          }
415                                        }
416                                      },
417                                      "loc": {
418                                        "start": {
419                                          "line": 8,
420                                          "column": 23
421                                        },
422                                        "end": {
423                                          "line": 8,
424                                          "column": 29
425                                        }
426                                      }
427                                    },
428                                    "loc": {
429                                      "start": {
430                                        "line": 8,
431                                        "column": 23
432                                      },
433                                      "end": {
434                                        "line": 8,
435                                        "column": 29
436                                      }
437                                    }
438                                  },
439                                  "decorators": [],
440                                  "loc": {
441                                    "start": {
442                                      "line": 8,
443                                      "column": 17
444                                    },
445                                    "end": {
446                                      "line": 8,
447                                      "column": 21
448                                    }
449                                  }
450                                },
451                                "init": {
452                                  "type": "ETSNewClassInstanceExpression",
453                                  "typeReference": {
454                                    "type": "ETSTypeReference",
455                                    "part": {
456                                      "type": "ETSTypeReferencePart",
457                                      "name": {
458                                        "type": "Identifier",
459                                        "name": "Base",
460                                        "decorators": [],
461                                        "loc": {
462                                          "start": {
463                                            "line": 8,
464                                            "column": 34
465                                          },
466                                          "end": {
467                                            "line": 8,
468                                            "column": 38
469                                          }
470                                        }
471                                      },
472                                      "loc": {
473                                        "start": {
474                                          "line": 8,
475                                          "column": 34
476                                        },
477                                        "end": {
478                                          "line": 8,
479                                          "column": 39
480                                        }
481                                      }
482                                    },
483                                    "loc": {
484                                      "start": {
485                                        "line": 8,
486                                        "column": 34
487                                      },
488                                      "end": {
489                                        "line": 8,
490                                        "column": 39
491                                      }
492                                    }
493                                  },
494                                  "arguments": [],
495                                  "loc": {
496                                    "start": {
497                                      "line": 8,
498                                      "column": 30
499                                    },
500                                    "end": {
501                                      "line": 8,
502                                      "column": 41
503                                    }
504                                  }
505                                },
506                                "loc": {
507                                  "start": {
508                                    "line": 8,
509                                    "column": 17
510                                  },
511                                  "end": {
512                                    "line": 8,
513                                    "column": 41
514                                  }
515                                }
516                              }
517                            ],
518                            "kind": "let",
519                            "loc": {
520                              "start": {
521                                "line": 8,
522                                "column": 13
523                              },
524                              "end": {
525                                "line": 8,
526                                "column": 41
527                              }
528                            }
529                          },
530                          {
531                            "type": "ExpressionStatement",
532                            "expression": {
533                              "type": "CallExpression",
534                              "callee": {
535                                "type": "MemberExpression",
536                                "object": {
537                                  "type": "Identifier",
538                                  "name": "base",
539                                  "decorators": [],
540                                  "loc": {
541                                    "start": {
542                                      "line": 9,
543                                      "column": 13
544                                    },
545                                    "end": {
546                                      "line": 9,
547                                      "column": 17
548                                    }
549                                  }
550                                },
551                                "property": {
552                                  "type": "Identifier",
553                                  "name": "a",
554                                  "decorators": [],
555                                  "loc": {
556                                    "start": {
557                                      "line": 9,
558                                      "column": 18
559                                    },
560                                    "end": {
561                                      "line": 9,
562                                      "column": 19
563                                    }
564                                  }
565                                },
566                                "computed": false,
567                                "optional": false,
568                                "loc": {
569                                  "start": {
570                                    "line": 9,
571                                    "column": 13
572                                  },
573                                  "end": {
574                                    "line": 9,
575                                    "column": 19
576                                  }
577                                }
578                              },
579                              "arguments": [],
580                              "optional": false,
581                              "loc": {
582                                "start": {
583                                  "line": 9,
584                                  "column": 13
585                                },
586                                "end": {
587                                  "line": 9,
588                                  "column": 21
589                                }
590                              }
591                            },
592                            "loc": {
593                              "start": {
594                                "line": 9,
595                                "column": 13
596                              },
597                              "end": {
598                                "line": 9,
599                                "column": 22
600                              }
601                            }
602                          },
603                          {
604                            "type": "ExpressionStatement",
605                            "expression": {
606                              "type": "CallExpression",
607                              "callee": {
608                                "type": "Identifier",
609                                "name": "a",
610                                "decorators": [],
611                                "loc": {
612                                  "start": {
613                                    "line": 10,
614                                    "column": 13
615                                  },
616                                  "end": {
617                                    "line": 10,
618                                    "column": 14
619                                  }
620                                }
621                              },
622                              "arguments": [],
623                              "optional": false,
624                              "loc": {
625                                "start": {
626                                  "line": 10,
627                                  "column": 13
628                                },
629                                "end": {
630                                  "line": 10,
631                                  "column": 16
632                                }
633                              }
634                            },
635                            "loc": {
636                              "start": {
637                                "line": 10,
638                                "column": 13
639                              },
640                              "end": {
641                                "line": 10,
642                                "column": 17
643                              }
644                            }
645                          }
646                        ],
647                        "loc": {
648                          "start": {
649                            "line": 7,
650                            "column": 21
651                          },
652                          "end": {
653                            "line": 11,
654                            "column": 10
655                          }
656                        }
657                      },
658                      "loc": {
659                        "start": {
660                          "line": 7,
661                          "column": 12
662                        },
663                        "end": {
664                          "line": 11,
665                          "column": 10
666                        }
667                      }
668                    },
669                    "loc": {
670                      "start": {
671                        "line": 7,
672                        "column": 12
673                      },
674                      "end": {
675                        "line": 11,
676                        "column": 10
677                      }
678                    }
679                  },
680                  "overloads": [],
681                  "decorators": [],
682                  "loc": {
683                    "start": {
684                      "line": 7,
685                      "column": 9
686                    },
687                    "end": {
688                      "line": 11,
689                      "column": 10
690                    }
691                  }
692                },
693                {
694                  "type": "MethodDefinition",
695                  "key": {
696                    "type": "Identifier",
697                    "name": "constructor",
698                    "decorators": [],
699                    "loc": {
700                      "start": {
701                        "line": 1,
702                        "column": 1
703                      },
704                      "end": {
705                        "line": 1,
706                        "column": 1
707                      }
708                    }
709                  },
710                  "kind": "constructor",
711                  "static": false,
712                  "optional": false,
713                  "computed": false,
714                  "value": {
715                    "type": "FunctionExpression",
716                    "function": {
717                      "type": "ScriptFunction",
718                      "id": {
719                        "type": "Identifier",
720                        "name": "constructor",
721                        "decorators": [],
722                        "loc": {
723                          "start": {
724                            "line": 1,
725                            "column": 1
726                          },
727                          "end": {
728                            "line": 1,
729                            "column": 1
730                          }
731                        }
732                      },
733                      "generator": false,
734                      "async": false,
735                      "expression": false,
736                      "params": [],
737                      "body": {
738                        "type": "BlockStatement",
739                        "statements": [],
740                        "loc": {
741                          "start": {
742                            "line": 1,
743                            "column": 1
744                          },
745                          "end": {
746                            "line": 1,
747                            "column": 1
748                          }
749                        }
750                      },
751                      "loc": {
752                        "start": {
753                          "line": 1,
754                          "column": 1
755                        },
756                        "end": {
757                          "line": 1,
758                          "column": 1
759                        }
760                      }
761                    },
762                    "loc": {
763                      "start": {
764                        "line": 1,
765                        "column": 1
766                      },
767                      "end": {
768                        "line": 1,
769                        "column": 1
770                      }
771                    }
772                  },
773                  "overloads": [],
774                  "decorators": [],
775                  "loc": {
776                    "start": {
777                      "line": 12,
778                      "column": 6
779                    },
780                    "end": {
781                      "line": 12,
782                      "column": 6
783                    }
784                  }
785                }
786              ],
787              "loc": {
788                "start": {
789                  "line": 6,
790                  "column": 32
791                },
792                "end": {
793                  "line": 12,
794                  "column": 6
795                }
796              }
797            },
798            "loc": {
799              "start": {
800                "line": 6,
801                "column": 5
802              },
803              "end": {
804                "line": 12,
805                "column": 6
806              }
807            }
808          },
809          {
810            "type": "MethodDefinition",
811            "key": {
812              "type": "Identifier",
813              "name": "constructor",
814              "decorators": [],
815              "loc": {
816                "start": {
817                  "line": 1,
818                  "column": 1
819                },
820                "end": {
821                  "line": 1,
822                  "column": 1
823                }
824              }
825            },
826            "kind": "constructor",
827            "static": false,
828            "optional": false,
829            "computed": false,
830            "value": {
831              "type": "FunctionExpression",
832              "function": {
833                "type": "ScriptFunction",
834                "id": {
835                  "type": "Identifier",
836                  "name": "constructor",
837                  "decorators": [],
838                  "loc": {
839                    "start": {
840                      "line": 1,
841                      "column": 1
842                    },
843                    "end": {
844                      "line": 1,
845                      "column": 1
846                    }
847                  }
848                },
849                "generator": false,
850                "async": false,
851                "expression": false,
852                "params": [],
853                "body": {
854                  "type": "BlockStatement",
855                  "statements": [],
856                  "loc": {
857                    "start": {
858                      "line": 1,
859                      "column": 1
860                    },
861                    "end": {
862                      "line": 1,
863                      "column": 1
864                    }
865                  }
866                },
867                "loc": {
868                  "start": {
869                    "line": 1,
870                    "column": 1
871                  },
872                  "end": {
873                    "line": 1,
874                    "column": 1
875                  }
876                }
877              },
878              "loc": {
879                "start": {
880                  "line": 1,
881                  "column": 1
882                },
883                "end": {
884                  "line": 1,
885                  "column": 1
886                }
887              }
888            },
889            "overloads": [],
890            "decorators": [],
891            "loc": {
892              "start": {
893                "line": 13,
894                "column": 2
895              },
896              "end": {
897                "line": 13,
898                "column": 2
899              }
900            }
901          }
902        ],
903        "loc": {
904          "start": {
905            "line": 1,
906            "column": 13
907          },
908          "end": {
909            "line": 13,
910            "column": 2
911          }
912        }
913      },
914      "loc": {
915        "start": {
916          "line": 1,
917          "column": 1
918        },
919        "end": {
920          "line": 13,
921          "column": 2
922        }
923      }
924    },
925    {
926      "type": "ClassDeclaration",
927      "definition": {
928        "id": {
929          "type": "Identifier",
930          "name": "ETSGLOBAL",
931          "decorators": [],
932          "loc": {
933            "start": {
934              "line": 1,
935              "column": 1
936            },
937            "end": {
938              "line": 1,
939              "column": 1
940            }
941          }
942        },
943        "superClass": null,
944        "implements": [],
945        "body": [],
946        "loc": {
947          "start": {
948            "line": 1,
949            "column": 1
950          },
951          "end": {
952            "line": 1,
953            "column": 1
954          }
955        }
956      },
957      "loc": {
958        "start": {
959          "line": 1,
960          "column": 1
961        },
962        "end": {
963          "line": 1,
964          "column": 1
965        }
966      }
967    }
968  ],
969  "loc": {
970    "start": {
971      "line": 1,
972      "column": 1
973    },
974    "end": {
975      "line": 14,
976      "column": 1
977    }
978  }
979}
980TypeError: Signature a(): void is not visible here. [invalidPrivateAccess5.sts:10:13]
981