private visitFunctionLike()

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