Project

General

Profile

1
{"version":3,"file":"typescript_symbols.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/diagnostics/typescript_symbols.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AotSummaryResolver, CompileMetadataResolver, CompilePipeSummary, CompilerConfig, DEFAULT_INTERPOLATION_CONFIG, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, HtmlParser, InterpolationConfig, NgAnalyzedModules, NgModuleResolver, ParseTreeResult, PipeResolver, ResourceLoader, StaticReflector, StaticSymbol, StaticSymbolCache, StaticSymbolResolver, SummaryResolver, analyzeNgModules, createOfflineCompileUrlResolver, extractProgramSymbols} from '@angular/compiler';\nimport {ViewEncapsulation, ɵConsole as Console} from '@angular/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\n\nimport {BuiltinType, DeclarationKind, Definition, PipeInfo, Pipes, Signature, Span, Symbol, SymbolDeclaration, SymbolQuery, SymbolTable} from './symbols';\n\n\n// In TypeScript 2.1 these flags moved\n// These helpers work for both 2.0 and 2.1.\nconst isPrivate = (ts as any).ModifierFlags ?\n    ((node: ts.Node) =>\n         !!((ts as any).getCombinedModifierFlags(node) & (ts as any).ModifierFlags.Private)) :\n    ((node: ts.Node) => !!(node.flags & (ts as any).NodeFlags.Private));\n\nconst isReferenceType = (ts as any).ObjectFlags ?\n    ((type: ts.Type) =>\n         !!(type.flags & (ts as any).TypeFlags.Object &&\n            (type as any).objectFlags & (ts as any).ObjectFlags.Reference)) :\n    ((type: ts.Type) => !!(type.flags & (ts as any).TypeFlags.Reference));\n\ninterface TypeContext {\n  node: ts.Node;\n  program: ts.Program;\n  checker: ts.TypeChecker;\n}\n\nexport function getSymbolQuery(\n    program: ts.Program, checker: ts.TypeChecker, source: ts.SourceFile,\n    fetchPipes: () => SymbolTable): SymbolQuery {\n  return new TypeScriptSymbolQuery(program, checker, source, fetchPipes);\n}\n\nexport function getClassMembers(\n    program: ts.Program, checker: ts.TypeChecker, staticSymbol: StaticSymbol): SymbolTable|\n    undefined {\n  const declaration = getClassFromStaticSymbol(program, staticSymbol);\n  if (declaration) {\n    const type = checker.getTypeAtLocation(declaration);\n    const node = program.getSourceFile(staticSymbol.filePath);\n    return new TypeWrapper(type, {node, program, checker}).members();\n  }\n}\n\nexport function getClassMembersFromDeclaration(\n    program: ts.Program, checker: ts.TypeChecker, source: ts.SourceFile,\n    declaration: ts.ClassDeclaration) {\n  const type = checker.getTypeAtLocation(declaration);\n  return new TypeWrapper(type, {node: source, program, checker}).members();\n}\n\nexport function getClassFromStaticSymbol(\n    program: ts.Program, type: StaticSymbol): ts.ClassDeclaration|undefined {\n  const source = program.getSourceFile(type.filePath);\n  if (source) {\n    return ts.forEachChild(source, child => {\n      if (child.kind === ts.SyntaxKind.ClassDeclaration) {\n        const classDeclaration = child as ts.ClassDeclaration;\n        if (classDeclaration.name != null && classDeclaration.name.text === type.name) {\n          return classDeclaration;\n        }\n      }\n    }) as(ts.ClassDeclaration | undefined);\n  }\n\n  return undefined;\n}\n\nexport function getPipesTable(\n    source: ts.SourceFile, program: ts.Program, checker: ts.TypeChecker,\n    pipes: CompilePipeSummary[]): SymbolTable {\n  return new PipesTable(pipes, {program, checker, node: source});\n}\n\nclass TypeScriptSymbolQuery implements SymbolQuery {\n  private typeCache = new Map<BuiltinType, Symbol>();\n  private pipesCache: SymbolTable;\n\n  constructor(\n      private program: ts.Program, private checker: ts.TypeChecker, private source: ts.SourceFile,\n      private fetchPipes: () => SymbolTable) {}\n\n  getTypeKind(symbol: Symbol): BuiltinType { return typeKindOf(this.getTsTypeOf(symbol)); }\n\n  getBuiltinType(kind: BuiltinType): Symbol {\n    let result = this.typeCache.get(kind);\n    if (!result) {\n      const type = getBuiltinTypeFromTs(\n          kind, {checker: this.checker, node: this.source, program: this.program});\n      result =\n          new TypeWrapper(type, {program: this.program, checker: this.checker, node: this.source});\n      this.typeCache.set(kind, result);\n    }\n    return result;\n  }\n\n  getTypeUnion(...types: Symbol[]): Symbol {\n    // No API exists so return any if the types are not all the same type.\n    let result: Symbol|undefined = undefined;\n    if (types.length) {\n      result = types[0];\n      for (let i = 1; i < types.length; i++) {\n        if (types[i] != result) {\n          result = undefined;\n          break;\n        }\n      }\n    }\n    return result || this.getBuiltinType(BuiltinType.Any);\n  }\n\n  getArrayType(type: Symbol): Symbol { return this.getBuiltinType(BuiltinType.Any); }\n\n  getElementType(type: Symbol): Symbol|undefined {\n    if (type instanceof TypeWrapper) {\n      const elementType = getTypeParameterOf(type.tsType, 'Array');\n      if (elementType) {\n        return new TypeWrapper(elementType, type.context);\n      }\n    }\n  }\n\n  getNonNullableType(symbol: Symbol): Symbol {\n    if (symbol instanceof TypeWrapper && (typeof this.checker.getNonNullableType == 'function')) {\n      const tsType = symbol.tsType;\n      const nonNullableType = this.checker.getNonNullableType(tsType);\n      if (nonNullableType != tsType) {\n        return new TypeWrapper(nonNullableType, symbol.context);\n      } else if (nonNullableType == tsType) {\n        return symbol;\n      }\n    }\n    return this.getBuiltinType(BuiltinType.Any);\n  }\n\n  getPipes(): SymbolTable {\n    let result = this.pipesCache;\n    if (!result) {\n      result = this.pipesCache = this.fetchPipes();\n    }\n    return result;\n  }\n\n  getTemplateContext(type: StaticSymbol): SymbolTable|undefined {\n    const context: TypeContext = {node: this.source, program: this.program, checker: this.checker};\n    const typeSymbol = findClassSymbolInContext(type, context);\n    if (typeSymbol) {\n      const contextType = this.getTemplateRefContextType(typeSymbol);\n      if (contextType) return new SymbolWrapper(contextType, context).members();\n    }\n  }\n\n  getTypeSymbol(type: StaticSymbol): Symbol|undefined {\n    const context: TypeContext = {node: this.source, program: this.program, checker: this.checker};\n    const typeSymbol = findClassSymbolInContext(type, context);\n    return typeSymbol && new SymbolWrapper(typeSymbol, context);\n  }\n\n  createSymbolTable(symbols: SymbolDeclaration[]): SymbolTable {\n    const result = new MapSymbolTable();\n    result.addAll(symbols.map(s => new DeclaredSymbol(s)));\n    return result;\n  }\n\n  mergeSymbolTable(symbolTables: SymbolTable[]): SymbolTable {\n    const result = new MapSymbolTable();\n    for (const symbolTable of symbolTables) {\n      result.addAll(symbolTable.values());\n    }\n    return result;\n  }\n\n  getSpanAt(line: number, column: number): Span|undefined {\n    return spanAt(this.source, line, column);\n  }\n\n  private getTemplateRefContextType(typeSymbol: ts.Symbol): ts.Symbol|undefined {\n    const type = this.checker.getTypeOfSymbolAtLocation(typeSymbol, this.source);\n    const constructor = type.symbol && type.symbol.members &&\n        getFromSymbolTable(type.symbol.members !, '__constructor');\n\n    if (constructor) {\n      const constructorDeclaration = constructor.declarations ![0] as ts.ConstructorTypeNode;\n      for (const parameter of constructorDeclaration.parameters) {\n        const type = this.checker.getTypeAtLocation(parameter.type !);\n        if (type.symbol !.name == 'TemplateRef' && isReferenceType(type)) {\n          const typeReference = type as ts.TypeReference;\n          if (typeReference.typeArguments.length === 1) {\n            return typeReference.typeArguments[0].symbol;\n          }\n        }\n      }\n    }\n  }\n\n  private getTsTypeOf(symbol: Symbol): ts.Type|undefined {\n    const type = this.getTypeWrapper(symbol);\n    return type && type.tsType;\n  }\n\n  private getTypeWrapper(symbol: Symbol): TypeWrapper|undefined {\n    let type: TypeWrapper|undefined = undefined;\n    if (symbol instanceof TypeWrapper) {\n      type = symbol;\n    } else if (symbol.type instanceof TypeWrapper) {\n      type = symbol.type;\n    }\n    return type;\n  }\n}\n\nfunction typeCallable(type: ts.Type): boolean {\n  const signatures = type.getCallSignatures();\n  return signatures && signatures.length != 0;\n}\n\nfunction signaturesOf(type: ts.Type, context: TypeContext): Signature[] {\n  return type.getCallSignatures().map(s => new SignatureWrapper(s, context));\n}\n\nfunction selectSignature(type: ts.Type, context: TypeContext, types: Symbol[]): Signature|\n    undefined {\n  // TODO: Do a better job of selecting the right signature.\n  const signatures = type.getCallSignatures();\n  return signatures.length ? new SignatureWrapper(signatures[0], context) : undefined;\n}\n\nclass TypeWrapper implements Symbol {\n  constructor(public tsType: ts.Type, public context: TypeContext) {\n    if (!tsType) {\n      throw Error('Internal: null type');\n    }\n  }\n\n  get name(): string {\n    const symbol = this.tsType.symbol;\n    return (symbol && symbol.name) || '<anonymous>';\n  }\n\n  get kind(): DeclarationKind { return 'type'; }\n\n  get language(): string { return 'typescript'; }\n\n  get type(): Symbol|undefined { return undefined; }\n\n  get container(): Symbol|undefined { return undefined; }\n\n  get public(): boolean { return true; }\n\n  get callable(): boolean { return typeCallable(this.tsType); }\n\n  get nullable(): boolean {\n    return this.context.checker.getNonNullableType(this.tsType) != this.tsType;\n  }\n\n  get definition(): Definition { return definitionFromTsSymbol(this.tsType.getSymbol()); }\n\n  members(): SymbolTable {\n    return new SymbolTableWrapper(this.tsType.getProperties(), this.context);\n  }\n\n  signatures(): Signature[] { return signaturesOf(this.tsType, this.context); }\n\n  selectSignature(types: Symbol[]): Signature|undefined {\n    return selectSignature(this.tsType, this.context, types);\n  }\n\n  indexed(argument: Symbol): Symbol|undefined { return undefined; }\n}\n\nclass SymbolWrapper implements Symbol {\n  private symbol: ts.Symbol;\n  private _tsType: ts.Type;\n  private _members: SymbolTable;\n\n  constructor(symbol: ts.Symbol, private context: TypeContext) {\n    this.symbol = symbol && context && (symbol.flags & ts.SymbolFlags.Alias) ?\n        context.checker.getAliasedSymbol(symbol) :\n        symbol;\n  }\n\n  get name(): string { return this.symbol.name; }\n\n  get kind(): DeclarationKind { return this.callable ? 'method' : 'property'; }\n\n  get language(): string { return 'typescript'; }\n\n  get type(): Symbol|undefined { return new TypeWrapper(this.tsType, this.context); }\n\n  get container(): Symbol|undefined { return getContainerOf(this.symbol, this.context); }\n\n  get public(): boolean {\n    // Symbols that are not explicitly made private are public.\n    return !isSymbolPrivate(this.symbol);\n  }\n\n  get callable(): boolean { return typeCallable(this.tsType); }\n\n  get nullable(): boolean { return false; }\n\n  get definition(): Definition { return definitionFromTsSymbol(this.symbol); }\n\n  members(): SymbolTable {\n    if (!this._members) {\n      if ((this.symbol.flags & (ts.SymbolFlags.Class | ts.SymbolFlags.Interface)) != 0) {\n        const declaredType = this.context.checker.getDeclaredTypeOfSymbol(this.symbol);\n        const typeWrapper = new TypeWrapper(declaredType, this.context);\n        this._members = typeWrapper.members();\n      } else {\n        this._members = new SymbolTableWrapper(this.symbol.members !, this.context);\n      }\n    }\n    return this._members;\n  }\n\n  signatures(): Signature[] { return signaturesOf(this.tsType, this.context); }\n\n  selectSignature(types: Symbol[]): Signature|undefined {\n    return selectSignature(this.tsType, this.context, types);\n  }\n\n  indexed(argument: Symbol): Symbol|undefined { return undefined; }\n\n  private get tsType(): ts.Type {\n    let type = this._tsType;\n    if (!type) {\n      type = this._tsType =\n          this.context.checker.getTypeOfSymbolAtLocation(this.symbol, this.context.node);\n    }\n    return type;\n  }\n}\n\nclass DeclaredSymbol implements Symbol {\n  constructor(private declaration: SymbolDeclaration) {}\n\n  get name() { return this.declaration.name; }\n\n  get kind() { return this.declaration.kind; }\n\n  get language(): string { return 'ng-template'; }\n\n  get container(): Symbol|undefined { return undefined; }\n\n  get type() { return this.declaration.type; }\n\n  get callable(): boolean { return this.declaration.type.callable; }\n\n  get nullable(): boolean { return false; }\n\n  get public(): boolean { return true; }\n\n  get definition(): Definition { return this.declaration.definition; }\n\n  members(): SymbolTable { return this.declaration.type.members(); }\n\n  signatures(): Signature[] { return this.declaration.type.signatures(); }\n\n  selectSignature(types: Symbol[]): Signature|undefined {\n    return this.declaration.type.selectSignature(types);\n  }\n\n  indexed(argument: Symbol): Symbol|undefined { return undefined; }\n}\n\nclass SignatureWrapper implements Signature {\n  constructor(private signature: ts.Signature, private context: TypeContext) {}\n\n  get arguments(): SymbolTable {\n    return new SymbolTableWrapper(this.signature.getParameters(), this.context);\n  }\n\n  get result(): Symbol { return new TypeWrapper(this.signature.getReturnType(), this.context); }\n}\n\nclass SignatureResultOverride implements Signature {\n  constructor(private signature: Signature, private resultType: Symbol) {}\n\n  get arguments(): SymbolTable { return this.signature.arguments; }\n\n  get result(): Symbol { return this.resultType; }\n}\n\nconst toSymbolTable: (symbols: ts.Symbol[]) => ts.SymbolTable = isTypescriptVersion('2.2') ?\n    (symbols => {\n      const result = new Map<string, ts.Symbol>();\n      for (const symbol of symbols) {\n        result.set(symbol.name, symbol);\n      }\n      return <ts.SymbolTable>(result as any);\n    }) :\n    (symbols => {\n      const result = <any>{};\n      for (const symbol of symbols) {\n        result[symbol.name] = symbol;\n      }\n      return result as ts.SymbolTable;\n    });\n\nfunction toSymbols(symbolTable: ts.SymbolTable | undefined): ts.Symbol[] {\n  if (!symbolTable) return [];\n\n  const table = symbolTable as any;\n\n  if (typeof table.values === 'function') {\n    return Array.from(table.values()) as ts.Symbol[];\n  }\n\n  const result: ts.Symbol[] = [];\n\n  const own = typeof table.hasOwnProperty === 'function' ?\n      (name: string) => table.hasOwnProperty(name) :\n      (name: string) => !!table[name];\n\n  for (const name in table) {\n    if (own(name)) {\n      result.push(table[name]);\n    }\n  }\n  return result;\n}\n\nclass SymbolTableWrapper implements SymbolTable {\n  private symbols: ts.Symbol[];\n  private symbolTable: ts.SymbolTable;\n\n  constructor(symbols: ts.SymbolTable|ts.Symbol[]|undefined, private context: TypeContext) {\n    symbols = symbols || [];\n\n    if (Array.isArray(symbols)) {\n      this.symbols = symbols;\n      this.symbolTable = toSymbolTable(symbols);\n    } else {\n      this.symbols = toSymbols(symbols);\n      this.symbolTable = symbols;\n    }\n  }\n\n  get size(): number { return this.symbols.length; }\n\n  get(key: string): Symbol|undefined {\n    const symbol = getFromSymbolTable(this.symbolTable, key);\n    return symbol ? new SymbolWrapper(symbol, this.context) : undefined;\n  }\n\n  has(key: string): boolean {\n    const table: any = this.symbolTable;\n    return (typeof table.has === 'function') ? table.has(key) : table[key] != null;\n  }\n\n  values(): Symbol[] { return this.symbols.map(s => new SymbolWrapper(s, this.context)); }\n}\n\nclass MapSymbolTable implements SymbolTable {\n  private map = new Map<string, Symbol>();\n  private _values: Symbol[] = [];\n\n  get size(): number { return this.map.size; }\n\n  get(key: string): Symbol|undefined { return this.map.get(key); }\n\n  add(symbol: Symbol) {\n    if (this.map.has(symbol.name)) {\n      const previous = this.map.get(symbol.name) !;\n      this._values[this._values.indexOf(previous)] = symbol;\n    }\n    this.map.set(symbol.name, symbol);\n    this._values.push(symbol);\n  }\n\n  addAll(symbols: Symbol[]) {\n    for (const symbol of symbols) {\n      this.add(symbol);\n    }\n  }\n\n  has(key: string): boolean { return this.map.has(key); }\n\n  values(): Symbol[] {\n    // Switch to this.map.values once iterables are supported by the target language.\n    return this._values;\n  }\n}\n\nclass PipesTable implements SymbolTable {\n  constructor(private pipes: CompilePipeSummary[], private context: TypeContext) {}\n\n  get size() { return this.pipes.length; }\n\n  get(key: string): Symbol|undefined {\n    const pipe = this.pipes.find(pipe => pipe.name == key);\n    if (pipe) {\n      return new PipeSymbol(pipe, this.context);\n    }\n  }\n\n  has(key: string): boolean { return this.pipes.find(pipe => pipe.name == key) != null; }\n\n  values(): Symbol[] { return this.pipes.map(pipe => new PipeSymbol(pipe, this.context)); }\n}\n\nclass PipeSymbol implements Symbol {\n  private _tsType: ts.Type;\n\n  constructor(private pipe: CompilePipeSummary, private context: TypeContext) {}\n\n  get name(): string { return this.pipe.name; }\n\n  get kind(): DeclarationKind { return 'pipe'; }\n\n  get language(): string { return 'typescript'; }\n\n  get type(): Symbol|undefined { return new TypeWrapper(this.tsType, this.context); }\n\n  get container(): Symbol|undefined { return undefined; }\n\n  get callable(): boolean { return true; }\n\n  get nullable(): boolean { return false; }\n\n  get public(): boolean { return true; }\n\n  get definition(): Definition { return definitionFromTsSymbol(this.tsType.getSymbol()); }\n\n  members(): SymbolTable { return EmptyTable.instance; }\n\n  signatures(): Signature[] { return signaturesOf(this.tsType, this.context); }\n\n  selectSignature(types: Symbol[]): Signature|undefined {\n    let signature = selectSignature(this.tsType, this.context, types) !;\n    if (types.length == 1) {\n      const parameterType = types[0];\n      if (parameterType instanceof TypeWrapper) {\n        let resultType: ts.Type|undefined = undefined;\n        switch (this.name) {\n          case 'async':\n            switch (parameterType.name) {\n              case 'Observable':\n              case 'Promise':\n              case 'EventEmitter':\n                resultType = getTypeParameterOf(parameterType.tsType, parameterType.name);\n                break;\n              default:\n                resultType = getBuiltinTypeFromTs(BuiltinType.Any, this.context);\n                break;\n            }\n            break;\n          case 'slice':\n            resultType = getTypeParameterOf(parameterType.tsType, 'Array');\n            break;\n        }\n        if (resultType) {\n          signature = new SignatureResultOverride(\n              signature, new TypeWrapper(resultType, parameterType.context));\n        }\n      }\n    }\n    return signature;\n  }\n\n  indexed(argument: Symbol): Symbol|undefined { return undefined; }\n\n  private get tsType(): ts.Type {\n    let type = this._tsType;\n    if (!type) {\n      const classSymbol = this.findClassSymbol(this.pipe.type.reference);\n      if (classSymbol) {\n        type = this._tsType = this.findTransformMethodType(classSymbol) !;\n      }\n      if (!type) {\n        type = this._tsType = getBuiltinTypeFromTs(BuiltinType.Any, this.context);\n      }\n    }\n    return type;\n  }\n\n  private findClassSymbol(type: StaticSymbol): ts.Symbol|undefined {\n    return findClassSymbolInContext(type, this.context);\n  }\n\n  private findTransformMethodType(classSymbol: ts.Symbol): ts.Type|undefined {\n    const classType = this.context.checker.getDeclaredTypeOfSymbol(classSymbol);\n    if (classType) {\n      const transform = classType.getProperty('transform');\n      if (transform) {\n        return this.context.checker.getTypeOfSymbolAtLocation(transform, this.context.node);\n      }\n    }\n  }\n}\n\nfunction findClassSymbolInContext(type: StaticSymbol, context: TypeContext): ts.Symbol|undefined {\n  const sourceFile = context.program.getSourceFile(type.filePath);\n  if (sourceFile) {\n    const moduleSymbol = (sourceFile as any).module || (sourceFile as any).symbol;\n    const exports = context.checker.getExportsOfModule(moduleSymbol);\n    return (exports || []).find(symbol => symbol.name == type.name);\n  }\n}\n\nclass EmptyTable implements SymbolTable {\n  get size(): number { return 0; }\n  get(key: string): Symbol|undefined { return undefined; }\n  has(key: string): boolean { return false; }\n  values(): Symbol[] { return []; }\n  static instance = new EmptyTable();\n}\n\nfunction findTsConfig(fileName: string): string|undefined {\n  let dir = path.dirname(fileName);\n  while (fs.existsSync(dir)) {\n    const candidate = path.join(dir, 'tsconfig.json');\n    if (fs.existsSync(candidate)) return candidate;\n    const parentDir = path.dirname(dir);\n    if (parentDir === dir) break;\n    dir = parentDir;\n  }\n}\n\nfunction isBindingPattern(node: ts.Node): node is ts.BindingPattern {\n  return !!node && (node.kind === ts.SyntaxKind.ArrayBindingPattern ||\n                    node.kind === ts.SyntaxKind.ObjectBindingPattern);\n}\n\nfunction walkUpBindingElementsAndPatterns(node: ts.Node): ts.Node {\n  while (node && (node.kind === ts.SyntaxKind.BindingElement || isBindingPattern(node))) {\n    node = node.parent !;\n  }\n\n  return node;\n}\n\nfunction getCombinedNodeFlags(node: ts.Node): ts.NodeFlags {\n  node = walkUpBindingElementsAndPatterns(node);\n\n  let flags = node.flags;\n  if (node.kind === ts.SyntaxKind.VariableDeclaration) {\n    node = node.parent !;\n  }\n\n  if (node && node.kind === ts.SyntaxKind.VariableDeclarationList) {\n    flags |= node.flags;\n    node = node.parent !;\n  }\n\n  if (node && node.kind === ts.SyntaxKind.VariableStatement) {\n    flags |= node.flags;\n  }\n\n  return flags;\n}\n\nfunction isSymbolPrivate(s: ts.Symbol): boolean {\n  return !!s.valueDeclaration && isPrivate(s.valueDeclaration);\n}\n\nfunction getBuiltinTypeFromTs(kind: BuiltinType, context: TypeContext): ts.Type {\n  let type: ts.Type;\n  const checker = context.checker;\n  const node = context.node;\n  switch (kind) {\n    case BuiltinType.Any:\n      type = checker.getTypeAtLocation(setParents(\n          <ts.Node><any>{\n            kind: ts.SyntaxKind.AsExpression,\n            expression: <ts.Node>{kind: ts.SyntaxKind.TrueKeyword},\n            type: <ts.Node>{kind: ts.SyntaxKind.AnyKeyword}\n          },\n          node));\n      break;\n    case BuiltinType.Boolean:\n      type =\n          checker.getTypeAtLocation(setParents(<ts.Node>{kind: ts.SyntaxKind.TrueKeyword}, node));\n      break;\n    case BuiltinType.Null:\n      type =\n          checker.getTypeAtLocation(setParents(<ts.Node>{kind: ts.SyntaxKind.NullKeyword}, node));\n      break;\n    case BuiltinType.Number:\n      const numeric = <ts.Node>{kind: ts.SyntaxKind.NumericLiteral};\n      setParents(<any>{kind: ts.SyntaxKind.ExpressionStatement, expression: numeric}, node);\n      type = checker.getTypeAtLocation(numeric);\n      break;\n    case BuiltinType.String:\n      type = checker.getTypeAtLocation(\n          setParents(<ts.Node>{kind: ts.SyntaxKind.NoSubstitutionTemplateLiteral}, node));\n      break;\n    case BuiltinType.Undefined:\n      type = checker.getTypeAtLocation(setParents(\n          <ts.Node><any>{\n            kind: ts.SyntaxKind.VoidExpression,\n            expression: <ts.Node>{kind: ts.SyntaxKind.NumericLiteral}\n          },\n          node));\n      break;\n    default:\n      throw new Error(`Internal error, unhandled literal kind ${kind}:${BuiltinType[kind]}`);\n  }\n  return type;\n}\n\nfunction setParents<T extends ts.Node>(node: T, parent: ts.Node): T {\n  node.parent = parent;\n  ts.forEachChild(node, child => setParents(child, node));\n  return node;\n}\n\nfunction spanOf(node: ts.Node): Span {\n  return {start: node.getStart(), end: node.getEnd()};\n}\n\nfunction shrink(span: Span, offset?: number) {\n  if (offset == null) offset = 1;\n  return {start: span.start + offset, end: span.end - offset};\n}\n\nfunction spanAt(sourceFile: ts.SourceFile, line: number, column: number): Span|undefined {\n  if (line != null && column != null) {\n    const position = ts.getPositionOfLineAndCharacter(sourceFile, line, column);\n    const findChild = function findChild(node: ts.Node): ts.Node | undefined {\n      if (node.kind > ts.SyntaxKind.LastToken && node.pos <= position && node.end > position) {\n        const betterNode = ts.forEachChild(node, findChild);\n        return betterNode || node;\n      }\n    };\n\n    const node = ts.forEachChild(sourceFile, findChild);\n    if (node) {\n      return {start: node.getStart(), end: node.getEnd()};\n    }\n  }\n}\n\nfunction definitionFromTsSymbol(symbol: ts.Symbol): Definition {\n  const declarations = symbol.declarations;\n  if (declarations) {\n    return declarations.map(declaration => {\n      const sourceFile = declaration.getSourceFile();\n      return {\n        fileName: sourceFile.fileName,\n        span: {start: declaration.getStart(), end: declaration.getEnd()}\n      };\n    });\n  }\n}\n\nfunction parentDeclarationOf(node: ts.Node): ts.Node|undefined {\n  while (node) {\n    switch (node.kind) {\n      case ts.SyntaxKind.ClassDeclaration:\n      case ts.SyntaxKind.InterfaceDeclaration:\n        return node;\n      case ts.SyntaxKind.SourceFile:\n        return undefined;\n    }\n    node = node.parent !;\n  }\n}\n\nfunction getContainerOf(symbol: ts.Symbol, context: TypeContext): Symbol|undefined {\n  if (symbol.getFlags() & ts.SymbolFlags.ClassMember && symbol.declarations) {\n    for (const declaration of symbol.declarations) {\n      const parent = parentDeclarationOf(declaration);\n      if (parent) {\n        const type = context.checker.getTypeAtLocation(parent);\n        if (type) {\n          return new TypeWrapper(type, context);\n        }\n      }\n    }\n  }\n}\n\nfunction getTypeParameterOf(type: ts.Type, name: string): ts.Type|undefined {\n  if (type && type.symbol && type.symbol.name == name) {\n    const typeArguments: ts.Type[] = (type as any).typeArguments;\n    if (typeArguments && typeArguments.length <= 1) {\n      return typeArguments[0];\n    }\n  }\n}\n\nfunction typeKindOf(type: ts.Type | undefined): BuiltinType {\n  if (type) {\n    if (type.flags & ts.TypeFlags.Any) {\n      return BuiltinType.Any;\n    } else if (\n        type.flags & (ts.TypeFlags.String | ts.TypeFlags.StringLike | ts.TypeFlags.StringLiteral)) {\n      return BuiltinType.String;\n    } else if (type.flags & (ts.TypeFlags.Number | ts.TypeFlags.NumberLike)) {\n      return BuiltinType.Number;\n    } else if (type.flags & (ts.TypeFlags.Undefined)) {\n      return BuiltinType.Undefined;\n    } else if (type.flags & (ts.TypeFlags.Null)) {\n      return BuiltinType.Null;\n    } else if (type.flags & ts.TypeFlags.Union) {\n      // If all the constituent types of a union are the same kind, it is also that kind.\n      let candidate: BuiltinType|null = null;\n      const unionType = type as ts.UnionType;\n      if (unionType.types.length > 0) {\n        candidate = typeKindOf(unionType.types[0]);\n        for (const subType of unionType.types) {\n          if (candidate != typeKindOf(subType)) {\n            return BuiltinType.Other;\n          }\n        }\n      }\n      if (candidate != null) {\n        return candidate;\n      }\n    } else if (type.flags & ts.TypeFlags.TypeParameter) {\n      return BuiltinType.Unbound;\n    }\n  }\n  return BuiltinType.Other;\n}\n\n\n\nfunction getFromSymbolTable(symbolTable: ts.SymbolTable, key: string): ts.Symbol|undefined {\n  const table = symbolTable as any;\n  let symbol: ts.Symbol|undefined;\n\n  if (typeof table.get === 'function') {\n    // TS 2.2 uses a Map\n    symbol = table.get(key);\n  } else {\n    // TS pre-2.2 uses an object\n    symbol = table[key];\n  }\n\n  return symbol;\n}\n\nfunction toNumbers(value: string | undefined): number[] {\n  return value ? value.split('.').map(v => +v) : [];\n}\n\nfunction compareNumbers(a: number[], b: number[]): -1|0|1 {\n  for (let i = 0; i < a.length && i < b.length; i++) {\n    if (a[i] > b[i]) return 1;\n    if (a[i] < b[i]) return -1;\n  }\n  return 0;\n}\n\nfunction isTypescriptVersion(low: string, high?: string): boolean {\n  const tsNumbers = toNumbers(ts.version);\n\n  return compareNumbers(toNumbers(low), tsNumbers) <= 0 &&\n      compareNumbers(toNumbers(high), tsNumbers) >= 0;\n}\n"]}
(15-15/15)