private visitDeclarationMetadata()

in lib/declaration.ts [963:987]


  private visitDeclarationMetadata(decl: ts.Declaration) {
    this.visitEachIfPresent(decl.modifiers);

    switch (decl.kind) {
      case ts.SyntaxKind.Constructor:
      case ts.SyntaxKind.ConstructSignature:
        this.emit('external factory');
        break;
      case ts.SyntaxKind.ArrowFunction:
      case ts.SyntaxKind.CallSignature:
      case ts.SyntaxKind.MethodDeclaration:
      case ts.SyntaxKind.SetAccessor:
      case ts.SyntaxKind.GetAccessor:
      case ts.SyntaxKind.MethodSignature:
      case ts.SyntaxKind.PropertySignature:
      case ts.SyntaxKind.FunctionDeclaration:
        if (!base.getEnclosingClass(decl)) {
          this.maybeEmitJsAnnotation(decl, {suppressUnneededPaths: true});
        }
        this.emit('external');
        break;
      default:
        throw 'Unexpected declaration kind:' + decl.kind;
    }
  }