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,
},
);
}