public override superCallExpression()

in src/languages/go.ts [751:781]


  public override superCallExpression(node: ts.CallExpression, renderer: AstRenderer<GoLanguageContext>): OTree {
    // We're on a `super` call, so we must be extending a base class.
    const base = findUp(node, ts.isConstructorDeclaration)!.parent.heritageClauses!.find(
      (clause) => clause.token === ts.SyntaxKind.ExtendsKeyword,
    )!.types[0].expression;
    const baseConstructor = ts.isPropertyAccessExpression(base)
      ? new OTree([
          renderer.convert(base.expression),
          '.New',
          ucFirst(this.goName(base.name.text, renderer, renderer.typeChecker.getSymbolAtLocation(base.name))),
        ])
      : ts.isIdentifier(base)
      ? `new${ucFirst(this.goName(base.text, renderer, renderer.typeChecker.getSymbolAtLocation(base)))}`
      : (function () {
          renderer.reportUnsupported(node, TargetLanguage.GO);
          return renderer.convert(base);
        })();

    return new OTree(
      [
        baseConstructor,
        '_Override(this, ',
        this.argumentList(node.arguments, renderer.updateContext({ wrapPtr: true, isPtr: true })),
        ')',
      ],
      [],
      {
        canBreakLine: true,
      },
    );
  }