in lib/declaration.ts [809:852]
private visitFunctionLike(fn: ts.FunctionLikeDeclaration, accessor?: string) {
this.fc.pushTypeParameterNames(fn);
if (base.isStatic(fn)) {
this.emit('static');
}
try {
this.visit(fn.type);
if (accessor) this.emit(accessor);
let name = fn.name;
if (name) {
if (name.kind !== ts.SyntaxKind.Identifier) {
this.reportError(name, 'Unexpected name kind:' + name.kind);
}
this.visitName(name);
}
if (fn.typeParameters && fn.typeParameters.length > 0) {
let insideComment = this.insideCodeComment;
if (!insideComment) {
this.enterCodeComment();
}
this.emitNoSpace('<');
this.enterTypeArguments();
this.visitList(fn.typeParameters);
this.exitTypeArguments();
this.emitNoSpace('>');
if (!insideComment) {
this.exitCodeComment();
}
}
// Dart does not even allow the parens of an empty param list on getter
if (accessor !== 'get') {
this.visitParameters(fn.parameters, {namesOnly: false});
} else {
if (fn.parameters && fn.parameters.length > 0) {
this.reportError(fn, 'getter should not accept parameters');
}
}
this.emitNoSpace(';');
} finally {
this.fc.popTypeParameterNames(fn);
}
}